m4-w-fast 1.2.0 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/intersect.worker.js +2 -2
- package/dist/isoBands.worker.js +1 -1
- package/dist/m4-w-fast.umd.js +1 -1
- package/dist/raster-leaflet/index.cjs +2 -2
- package/dist/raster-leaflet/index.js +1 -1
- package/dist/raster-leaflet/index.mjs +2 -2
- package/dist/raster-leaflet/m4-w-raster-leaflet.umd.js +2 -2
- package/dist/raster-mars3d/cesiumRasterPlaneRenderer.js +1 -1
- package/dist/raster-mars3d/cesiumRasterTextureAdapter.js +1 -1
- package/dist/raster-mars3d/index.cjs +2 -2
- package/dist/raster-mars3d/index.js +1 -1
- package/dist/raster-mars3d/index.mjs +2 -2
- package/dist/raster-mars3d/m4-w-raster-mars3d.umd.js +2 -2
- package/dist/raster-mars3d/mars3dRasterImageryProvider.js +1 -1
- package/dist/raster-mars3d/mars3dRasterPlaneLayer.js +1 -1
- package/dist/raster-mars3d/rasterPlaneGeometry.js +1 -1
- package/dist/raster-mars3d/rasterPlaneGridChunks.js +1 -1
- package/dist/raster-mars3d/rasterPlaneMaterial.js +1 -1
- package/dist/raster-overlay/color.js +1 -1
- package/dist/raster-overlay/core.js +1 -1
- package/dist/raster-overlay/index.cjs +2 -2
- package/dist/raster-overlay/index.js +1 -1
- package/dist/raster-overlay/index.mjs +2 -2
- package/dist/raster-overlay/leaflet-renderers/createRenderer.js +1 -1
- package/dist/raster-overlay/leafletLayer.js +1 -1
- package/dist/raster-overlay/m4-w-raster-overlay.umd.js +2 -2
- package/dist/raster-overlay/query.js +1 -1
- package/dist/raster-overlay/rendering/createRasterRenderer.js +1 -1
- package/dist/raster-overlay/rendering/index.js +1 -1
- package/dist/raster-overlay/rendering/rasterRenderState.js +1 -1
- package/dist/raster-overlay/rendering/webgl2RasterRenderer.js +1 -1
- package/dist/raster-overlay/rendering/webgpuRasterRenderer.js +1 -1
- package/dist/raster-rendering/index.cjs +2 -2
- package/dist/raster-rendering/index.js +1 -1
- package/dist/raster-rendering/index.mjs +2 -2
- package/dist/raster-rendering/m4-w-raster-rendering.umd.js +2 -2
- package/dist/raster-rendering/webgpuRasterTileRenderer.js +1 -1
- package/dist/readFile.js +1 -1
- package/dist/rendering/index.js +1 -1
- package/dist/rendering/webgl2/baseWebgl2Renderer.js +1 -1
- package/dist/rendering/webgl2/index.js +1 -1
- package/dist/rendering/webgl2/webgl2CoverageResources.js +1 -1
- package/dist/rendering/webgl2/webgl2VisualizationResources.js +1 -1
- package/dist/rendering/webgpu/baseWebgpuRenderer.js +1 -1
- package/dist/rendering/webgpu/index.js +1 -1
- package/dist/rendering/webgpu/visualizationParams.js +1 -1
- package/dist/rendering/webgpu/visualizationResources.js +1 -1
- package/dist/rendering/webgpu/webgpuCoverageResources.js +1 -1
- package/dist/road-overlay/coordinateTransform.js +1 -1
- package/dist/road-overlay/index.cjs +2 -2
- package/dist/road-overlay/index.js +1 -1
- package/dist/road-overlay/index.mjs +2 -2
- package/dist/road-overlay/leaflet-renderers/createRenderer.js +1 -1
- package/dist/road-overlay/leafletLayer.js +1 -1
- package/dist/road-overlay/m4-w-road-overlay.umd.js +2 -2
- package/dist/road-overlay/options.js +1 -1
- package/dist/road-overlay/rendering/index.js +1 -1
- package/dist/road-overlay/rendering/roadRenderState.js +1 -1
- package/dist/road-overlay/rendering/webgl2RoadRenderer.js +1 -1
- package/dist/road-overlay/rendering/webgpuRoadRenderer.js +1 -1
- package/dist/road-overlay/roadData.js +1 -1
- package/dist/road-overlay/roadGeometry.js +1 -1
- package/dist/road-overlay/roadMesh.js +1 -1
- package/dist/shared/coordinate-shader/webgl2/index.js +1 -1
- package/dist/shared/coordinate-shader/webgpu/index.js +1 -1
- package/dist/shared/map/index.js +1 -1
- package/dist/shared/map/leaflet.js +1 -1
- package/dist/shared/polygon/contains.js +1 -1
- package/dist/shared/polygon/index.js +1 -1
- package/dist/shared/polygon/polygonMesh.js +1 -1
- package/dist/shared/shader/assemble.js +1 -1
- package/dist/shared/visualization/index.js +1 -1
- package/dist/shared/visualization/shader/webgl2/index.js +1 -1
- package/dist/shared/visualization/shader/webgpu/index.js +1 -1
- package/dist/shared/visualization/utils.js +1 -1
- package/dist/volume-data/index.cjs +1 -0
- package/dist/volume-data/index.d.ts +5 -0
- package/dist/volume-data/index.js +1 -0
- package/dist/volume-data/index.mjs +1 -0
- package/dist/volume-data/input.d.ts +2 -0
- package/dist/volume-data/input.js +1 -0
- package/dist/volume-data/loadVolumeSource.d.ts +2 -0
- package/dist/volume-data/loadVolumeSource.js +1 -0
- package/dist/volume-data/m4-w-volume-data.umd.js +1 -0
- package/dist/volume-data/parserRegistry.d.ts +5 -0
- package/dist/volume-data/parserRegistry.js +1 -0
- package/dist/volume-data/radarGridVolumeMetadata.d.ts +2 -0
- package/dist/volume-data/radarGridVolumeMetadata.js +1 -0
- package/dist/volume-data/radarGridVolumeParser.d.ts +2 -0
- package/dist/volume-data/radarGridVolumeParser.js +1 -0
- package/dist/volume-data/radarGridVolumeSource.d.ts +3 -0
- package/dist/volume-data/radarGridVolumeSource.js +1 -0
- package/dist/volume-data/volumeDataError.d.ts +5 -0
- package/dist/volume-data/volumeDataError.js +1 -0
- package/dist/volume-data/volumeDataTypes.d.ts +54 -0
- package/dist/volume-data/volumeDataTypes.js +1 -0
- package/dist/volume-data/zipArchive.d.ts +6 -0
- package/dist/volume-data/zipArchive.js +1 -0
- package/dist/volume-mars3d/createMars3dVolumeScene.js +1 -1
- package/dist/volume-mars3d/index.cjs +1 -1
- package/dist/volume-mars3d/index.js +1 -1
- package/dist/volume-mars3d/index.mjs +1 -1
- package/dist/volume-mars3d/m4-w-volume-mars3d.umd.js +1 -1
- package/dist/volume-mars3d/mars3dCanvasCompensation.js +1 -1
- package/dist/volume-mars3d/mars3dRaymarchShader.js +1 -1
- package/dist/volume-mars3d/mars3dVolumeLayer.js +1 -1
- package/dist/volume-mars3d/mars3dVolumeRenderer.js +1 -1
- package/dist/volume-mars3d-native/index.cjs +1 -1
- package/dist/volume-mars3d-native/index.js +1 -1
- package/dist/volume-mars3d-native/index.mjs +1 -1
- package/dist/volume-mars3d-native/liveUpdateScheduler.js +1 -1
- package/dist/volume-mars3d-native/m4-w-volume-mars3d-native.umd.js +1 -1
- package/dist/volume-mars3d-native/mars3dNativeSliceLayer.js +1 -1
- package/dist/volume-mars3d-native/mars3dNativeSliceRenderer.js +1 -1
- package/dist/volume-mars3d-native/mars3dNativeVolumeLayer.js +1 -1
- package/dist/volume-mars3d-native/mars3dNativeVolumeRenderer.js +1 -1
- package/dist/volume-mars3d-native/nativeAxisSliceRenderer.js +1 -1
- package/dist/volume-mars3d-native/nativeSliceAtlas.js +1 -1
- package/dist/volume-mars3d-native/nativeVoxelProvider.js +1 -1
- package/dist/volume-mars3d-native/nativeVoxelShader.js +1 -1
- package/dist/volume-mars3d-native/voxelData.js +1 -1
- package/dist/volume-scene/brickLayout.js +1 -1
- package/dist/volume-scene/brickResidency.js +1 -1
- package/dist/volume-scene/camera.js +1 -1
- package/dist/volume-scene/createVolumeScene.js +1 -1
- package/dist/volume-scene/geographicVolume.js +1 -1
- package/dist/volume-scene/inMemoryVolumeSource.js +1 -1
- package/dist/volume-scene/index.cjs +1 -1
- package/dist/volume-scene/index.js +1 -1
- package/dist/volume-scene/index.mjs +1 -1
- package/dist/volume-scene/m4-w-volume-scene.umd.js +1 -1
- package/dist/volume-scene/matrix.js +1 -1
- package/dist/volume-scene/rendering/webgpu/index.js +1 -1
- package/dist/volume-scene/rendering/webgpu/webgpuBrickAtlas.js +1 -1
- package/dist/volume-scene/rendering/webgpu/webgpuSceneAttachments.js +1 -1
- package/dist/volume-scene/rendering/webgpu/webgpuSceneMeshResources.js +1 -1
- package/dist/volume-scene/rendering/webgpu/webgpuSliceResources.js +1 -1
- package/dist/volume-scene/rendering/webgpu/webgpuTransferResources.js +1 -1
- package/dist/volume-scene/rendering/webgpu/webgpuVolumeSceneRenderer.js +1 -1
- package/dist/volume-scene/routeProfileMesh.js +1 -1
- package/dist/volume-scene/sliceInteractionController.js +1 -1
- package/dist/volume-scene/sliceMarkerOverlay.js +1 -1
- package/dist/volume-scene/sliceState.js +1 -1
- package/dist/volume-scene/volumeBrickData.js +1 -1
- package/dist/volume-scene/volumeScene.js +1 -1
- package/dist/volume-scene/volumeTransfer.js +1 -1
- package/dist/volume-scene/volumeValidation.js +1 -1
- package/dist/volume-section/createHorizontalRasterGrid.d.ts +3 -0
- package/dist/volume-section/createHorizontalRasterGrid.js +1 -0
- package/dist/volume-section/createVolumeSection.d.ts +3 -0
- package/dist/volume-section/createVolumeSection.js +1 -0
- package/dist/volume-section/createVolumeSectionRasterGrid.d.ts +3 -0
- package/dist/volume-section/createVolumeSectionRasterGrid.js +1 -0
- package/dist/volume-section/createVolumeSectionRouteProfile.d.ts +3 -0
- package/dist/volume-section/createVolumeSectionRouteProfile.js +1 -0
- package/dist/volume-section/geographic.d.ts +3 -0
- package/dist/volume-section/geographic.js +1 -0
- package/dist/volume-section/gridLayerStatistics.d.ts +9 -0
- package/dist/volume-section/gridLayerStatistics.js +1 -0
- package/dist/volume-section/index.cjs +1 -0
- package/dist/volume-section/index.d.ts +8 -0
- package/dist/volume-section/index.js +1 -0
- package/dist/volume-section/index.mjs +1 -0
- package/dist/volume-section/m4-w-volume-section.umd.js +1 -0
- package/dist/volume-section/routeSampling.d.ts +9 -0
- package/dist/volume-section/routeSampling.js +1 -0
- package/dist/volume-section/volumeSectionTypes.d.ts +39 -0
- package/dist/volume-section/volumeSectionTypes.js +1 -0
- package/package.json +58 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
function _0x571d(_0xef965a,_0x2ad63a){const _0x1214e8=_0x1214();return _0x571d=function(_0x571dd6,_0x121920){_0x571dd6=_0x571dd6-0x179;let _0x3ce135=_0x1214e8[_0x571dd6];return _0x3ce135;},_0x571d(_0xef965a,_0x2ad63a);}(function(_0x31d914,_0x235fb1){const _0x1583d6=_0x571d,_0x396b33=_0x31d914();while(!![]){try{const _0x362738=-parseInt(_0x1583d6(0x449))/0x1*(-parseInt(_0x1583d6(0x356))/0x2)+parseInt(_0x1583d6(0x1ff))/0x3+-parseInt(_0x1583d6(0x2d3))/0x4*(-parseInt(_0x1583d6(0x411))/0x5)+-parseInt(_0x1583d6(0x2ea))/0x6+-parseInt(_0x1583d6(0x416))/0x7+-parseInt(_0x1583d6(0x291))/0x8+parseInt(_0x1583d6(0x405))/0x9*(parseInt(_0x1583d6(0x460))/0xa);if(_0x362738===_0x235fb1)break;else _0x396b33['push'](_0x396b33['shift']());}catch(_0x57515a){_0x396b33['push'](_0x396b33['shift']());}}}(_0x1214,0x46a4c),function(_0x7ec994,_0x78ef3e){const _0x23ba3f=_0x571d;typeof exports==_0x23ba3f(0x3f7)&&typeof module<'u'?_0x78ef3e(exports):typeof define==_0x23ba3f(0x2b2)&&define[_0x23ba3f(0x34e)]?define([_0x23ba3f(0x3a2)],_0x78ef3e):(_0x7ec994=typeof globalThis<'u'?globalThis:_0x7ec994||self,_0x78ef3e(_0x7ec994[_0x23ba3f(0x490)]={}));}(this,function(_0x5588ea){const _0x3a9ea2=_0x571d;Object['defineProperty'](_0x5588ea,Symbol[_0x3a9ea2(0x20a)],{'value':_0x3a9ea2(0x278)});let _0x3a43d4=(_0x231603,_0x2d3293)=>{const _0x2be23e=_0x3a9ea2;if(!Number[_0x2be23e(0x34f)](_0x231603)||_0x231603<=0x0)throw Error(_0x2d3293+'\x20must\x20be\x20a\x20positive\x20integer.\x20'+_0x2d3293+_0x2be23e(0x226));},_0x219516=(_0x446b93,_0x54370b)=>{const _0x5ed09d=_0x3a9ea2;if(_0x3a43d4(_0x446b93[_0x5ed09d(0x25f)],_0x54370b+_0x5ed09d(0x263)),!Number[_0x5ed09d(0x2ba)](_0x446b93[_0x5ed09d(0x239)])||!Number[_0x5ed09d(0x2ba)](_0x446b93['end']))throw Error(_0x54370b+'\x20endpoints\x20must\x20be\x20finite.\x20'+_0x54370b+_0x5ed09d(0x1fd));if(_0x446b93['count']===0x1&&_0x446b93[_0x5ed09d(0x239)]!==_0x446b93[_0x5ed09d(0x1e7)])throw Error(_0x54370b+'\x20with\x20one\x20sample\x20must\x20use\x20equal\x20endpoints.\x20'+_0x54370b+'\x20只有一个采样点时端点必须相等。');if(_0x446b93[_0x5ed09d(0x25f)]>0x1&&_0x446b93[_0x5ed09d(0x239)]===_0x446b93[_0x5ed09d(0x1e7)])throw Error(_0x54370b+_0x5ed09d(0x344)+_0x54370b+_0x5ed09d(0x3ea));},_0x145b12=(_0x4cf619,_0x40163d)=>{const _0x2ed13d=_0x3a9ea2;if(_0x4cf619!==void 0x0&&!Number[_0x2ed13d(0x2ba)](_0x4cf619)&&!Number[_0x2ed13d(0x2c9)](_0x4cf619))throw Error(_0x40163d+_0x2ed13d(0x3a7)+_0x40163d+_0x2ed13d(0x2a2));},_0x20dfbd=(_0x159dfc,_0x2d376a)=>_0x159dfc[_0x3a9ea2(0x3b3)]===_0x2d376a[_0x3a9ea2(0x3b3)]&&_0x159dfc[_0x3a9ea2(0x243)]===_0x2d376a[_0x3a9ea2(0x243)]&&_0x159dfc[_0x3a9ea2(0x1dc)]===_0x2d376a[_0x3a9ea2(0x1dc)]&&_0x159dfc['levelCount']===_0x2d376a[_0x3a9ea2(0x3f3)]&&_0x159dfc[_0x3a9ea2(0x38c)]===_0x2d376a[_0x3a9ea2(0x38c)]&&_0x159dfc[_0x3a9ea2(0x189)]===_0x2d376a[_0x3a9ea2(0x189)],_0x15d88c=_0x4b3abf=>{const _0x595c94=_0x3a9ea2;if(_0x219516(_0x4b3abf[_0x595c94(0x1f2)],_0x595c94(0x3fe)),_0x219516(_0x4b3abf[_0x595c94(0x42c)],_0x595c94(0x1cd)),_0x219516(_0x4b3abf[_0x595c94(0x46c)],'Volume\x20Z\x20axis'),_0x3a43d4(_0x4b3abf[_0x595c94(0x45c)],'Volume\x20timeCount'),_0x145b12(_0x4b3abf[_0x595c94(0x268)],_0x595c94(0x41f)),_0x4b3abf[_0x595c94(0x486)]!==void 0x0&&!Number['isFinite'](_0x4b3abf[_0x595c94(0x486)]))throw Error(_0x595c94(0x1fe));if(_0x4b3abf[_0x595c94(0x3f5)]!==void 0x0&&(!Number[_0x595c94(0x34f)](_0x4b3abf[_0x595c94(0x3f5)])||_0x4b3abf['revision']<0x0))throw Error('Volume\x20revision\x20must\x20be\x20a\x20non-negative\x20integer.\x20体积\x20revision\x20必须是非负整数。');},_0x18abc7=(_0x1431b1,_0x198371)=>{const _0x188d4a=_0x3a9ea2;if(!Number[_0x188d4a(0x34f)](_0x198371)||_0x198371<0x0||_0x198371>=_0x1431b1[_0x188d4a(0x45c)])throw Error(_0x188d4a(0x1b8)+_0x198371+_0x188d4a(0x450));},_0x121789=(_0x41a94d,_0x407844)=>{const _0x417775=_0x3a9ea2;let _0xc6cb49=[[_0x407844[_0x417775(0x3b3)],_0x417775(0x3b3)],[_0x407844[_0x417775(0x243)],_0x417775(0x243)],[_0x407844[_0x417775(0x1dc)],'levelStart'],[_0x407844[_0x417775(0x3f3)],_0x417775(0x3f3)],[_0x407844['sourceYStart'],_0x417775(0x38c)],[_0x407844[_0x417775(0x189)],_0x417775(0x189)]];for(let [_0x32681d,_0x1cf3ca]of _0xc6cb49)if(!Number['isInteger'](_0x32681d)||_0x32681d<0x0||_0x1cf3ca[_0x417775(0x1b0)]('Count')&&_0x32681d===0x0)throw Error(_0x417775(0x3b5)+_0x1cf3ca+_0x417775(0x271)+_0x32681d+_0x417775(0x297)+_0x1cf3ca+_0x417775(0x240));if(_0x407844[_0x417775(0x3b3)]+_0x407844[_0x417775(0x243)]>_0x41a94d[_0x417775(0x1f2)][_0x417775(0x25f)]||_0x407844['levelStart']+_0x407844[_0x417775(0x3f3)]>_0x41a94d[_0x417775(0x42c)]['count']||_0x407844[_0x417775(0x38c)]+_0x407844[_0x417775(0x189)]>_0x41a94d['zAxis'][_0x417775(0x25f)])throw Error(_0x417775(0x27a));},_0x466b16=(_0x440037,_0x5bf9da,_0x9ce9e8,_0x15b24a)=>{const _0x51c942=_0x3a9ea2;if(_0x18abc7(_0x440037,_0x5bf9da[_0x51c942(0x48d)]),_0x121789(_0x440037,_0x5bf9da[_0x51c942(0x17e)]),_0x15b24a!==void 0x0&&_0x5bf9da[_0x51c942(0x48d)]!==_0x15b24a)throw Error('Returned\x20volume\x20chunk\x20timeIndex\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块的时间索引与请求不一致。');if(_0x9ce9e8&&!_0x20dfbd(_0x5bf9da[_0x51c942(0x17e)],_0x9ce9e8))throw Error(_0x51c942(0x36d));if(_0x5bf9da[_0x51c942(0x1cc)]!==_0x5bf9da[_0x51c942(0x17e)][_0x51c942(0x243)]||_0x5bf9da[_0x51c942(0x22a)]!==_0x5bf9da[_0x51c942(0x17e)]['levelCount']||_0x5bf9da[_0x51c942(0x30f)]!==_0x5bf9da[_0x51c942(0x17e)][_0x51c942(0x189)])throw Error(_0x51c942(0x1c7));let _0x31eadc=_0x5bf9da[_0x51c942(0x1cc)]*_0x5bf9da[_0x51c942(0x22a)]*_0x5bf9da[_0x51c942(0x30f)];if(!Number[_0x51c942(0x47f)](_0x31eadc)||_0x5bf9da['values'][_0x51c942(0x2e8)]!==_0x31eadc)throw Error(_0x51c942(0x244)+_0x31eadc+'\x20values\x20but\x20received\x20'+_0x5bf9da[_0x51c942(0x1a1)][_0x51c942(0x2e8)]+'.\x20体积分块数值数量与尺寸不一致。');},_0x5d3edd=_0x2f4b41=>{const _0x310fb5=_0x3a9ea2;if(!_0x2f4b41||typeof _0x2f4b41[_0x310fb5(0x2d1)]!='function')throw Error('Volume\x20source\x20must\x20provide\x20readChunk().\x20体积数据源必须提供\x20readChunk()。');_0x15d88c(_0x2f4b41[_0x310fb5(0x474)]);},_0x3d0a50=_0xc32fb6=>{const _0x327c45=_0x3a9ea2;for(let [_0x55c162,_0x242790]of[[_0xc32fb6[_0x327c45(0x1cc)],'width'],[_0xc32fb6[_0x327c45(0x22a)],'height'],[_0xc32fb6[_0x327c45(0x30f)],_0x327c45(0x30f)]])if(!Number[_0x327c45(0x34f)](_0x55c162)||_0x55c162<=0x0)throw Error(_0x327c45(0x231)+_0x242790+_0x327c45(0x433)+_0x242790+_0x327c45(0x226));if(!Number[_0x327c45(0x34f)](_0xc32fb6['halo'])||_0xc32fb6['halo']<0x1)throw Error(_0x327c45(0x2f7));},_0x395d6=(_0x1a9196={})=>{const _0x1b067a=_0x3a9ea2;let _0x3f67b4={'width':_0x1a9196['width']??0x100,'height':_0x1a9196[_0x1b067a(0x22a)]??0x8,'depth':_0x1a9196[_0x1b067a(0x30f)]??0x100,'halo':_0x1a9196[_0x1b067a(0x3ca)]??0x1};return _0x3d0a50(_0x3f67b4),_0x3f67b4;},_0x3712e3=(_0x5a9752,_0x32fddf={})=>{const _0x572674=_0x3a9ea2;_0x15d88c(_0x5a9752);let _0x162c8f=_0x395d6(_0x32fddf),_0x413610=Math[_0x572674(0x37e)](_0x5a9752['xAxis'][_0x572674(0x25f)]/_0x162c8f['width']),_0x37c098=Math['ceil'](_0x5a9752['yAxis']['count']/_0x162c8f[_0x572674(0x22a)]),_0x37af83=Math[_0x572674(0x37e)](_0x5a9752[_0x572674(0x46c)]['count']/_0x162c8f[_0x572674(0x30f)]);return{'shape':_0x162c8f,'countX':_0x413610,'countY':_0x37c098,'countZ':_0x37af83,'brickCount':_0x413610*_0x37c098*_0x37af83};},_0x1ba404=_0x1cd184=>_0x1cd184['x']+':'+_0x1cd184['y']+':'+_0x1cd184['z'],_0xedbd6d=(_0x5b87f6,_0x4958b4,_0x267554)=>{const _0x24914d=_0x3a9ea2;if(!Number['isInteger'](_0x267554['x'])||!Number['isInteger'](_0x267554['y'])||!Number['isInteger'](_0x267554['z'])||_0x267554['x']<0x0||_0x267554['x']>=_0x4958b4[_0x24914d(0x204)]||_0x267554['y']<0x0||_0x267554['y']>=_0x4958b4[_0x24914d(0x17d)]||_0x267554['z']<0x0||_0x267554['z']>=_0x4958b4['countZ'])throw Error('Volume\x20brick\x20coordinate\x20is\x20out\x20of\x20range.\x20体积分块坐标越界。');let _0x266e3f=_0x267554['x']*_0x4958b4['shape']['width'],_0xf91853=_0x267554['y']*_0x4958b4['shape'][_0x24914d(0x22a)],_0x416cc3=_0x267554['z']*_0x4958b4[_0x24914d(0x1ab)][_0x24914d(0x30f)],_0x37b35f=Math[_0x24914d(0x3e9)](_0x4958b4['shape'][_0x24914d(0x1cc)],_0x5b87f6[_0x24914d(0x1f2)][_0x24914d(0x25f)]-_0x266e3f),_0x9f2d73=Math[_0x24914d(0x3e9)](_0x4958b4[_0x24914d(0x1ab)][_0x24914d(0x22a)],_0x5b87f6[_0x24914d(0x42c)][_0x24914d(0x25f)]-_0xf91853),_0x59db4d=Math['min'](_0x4958b4[_0x24914d(0x1ab)][_0x24914d(0x30f)],_0x5b87f6[_0x24914d(0x46c)][_0x24914d(0x25f)]-_0x416cc3),_0x193bae=_0x4958b4[_0x24914d(0x1ab)][_0x24914d(0x3ca)],_0x4d27e4=Math[_0x24914d(0x1ac)](0x0,_0x266e3f-_0x193bae),_0x5ab8f3=Math[_0x24914d(0x1ac)](0x0,_0xf91853-_0x193bae),_0x82b3fd=Math[_0x24914d(0x1ac)](0x0,_0x416cc3-_0x193bae),_0x262262=Math[_0x24914d(0x3e9)](_0x5b87f6[_0x24914d(0x1f2)][_0x24914d(0x25f)],_0x266e3f+_0x37b35f+_0x193bae),_0x327d64=Math['min'](_0x5b87f6[_0x24914d(0x42c)][_0x24914d(0x25f)],_0xf91853+_0x9f2d73+_0x193bae),_0x294ef0=Math['min'](_0x5b87f6[_0x24914d(0x46c)]['count'],_0x416cc3+_0x59db4d+_0x193bae),_0xcb9ed9=_0x4958b4[_0x24914d(0x1ab)][_0x24914d(0x1cc)]+_0x193bae*0x2,_0x182ed3=_0x4958b4[_0x24914d(0x1ab)][_0x24914d(0x22a)]+_0x193bae*0x2,_0x52abea=_0x4958b4['shape'][_0x24914d(0x30f)]+_0x193bae*0x2;return{'key':_0x1ba404(_0x267554),'coordinate':_0x267554,'coreRange':{'xStart':_0x266e3f,'xCount':_0x37b35f,'levelStart':_0xf91853,'levelCount':_0x9f2d73,'sourceYStart':_0x416cc3,'sourceYCount':_0x59db4d},'readRange':{'xStart':_0x4d27e4,'xCount':_0x262262-_0x4d27e4,'levelStart':_0x5ab8f3,'levelCount':_0x327d64-_0x5ab8f3,'sourceYStart':_0x82b3fd,'sourceYCount':_0x294ef0-_0x82b3fd},'physicalWidth':_0xcb9ed9,'physicalHeight':_0x182ed3,'physicalDepth':_0x52abea,'byteLength':_0xcb9ed9*_0x182ed3*_0x52abea*Float32Array['BYTES_PER_ELEMENT']};},_0x151690=(_0x402bb5,_0x18e05f)=>{const _0x5bbafa=_0x3a9ea2;let _0x22f1db=[];for(let _0x54c8=0x0;_0x54c8<_0x18e05f['countZ'];_0x54c8+=0x1)for(let _0x585d4e=0x0;_0x585d4e<_0x18e05f[_0x5bbafa(0x17d)];_0x585d4e+=0x1)for(let _0x5eb563=0x0;_0x5eb563<_0x18e05f[_0x5bbafa(0x204)];_0x5eb563+=0x1)_0x22f1db['push'](_0xedbd6d(_0x402bb5,_0x18e05f,{'x':_0x5eb563,'y':_0x585d4e,'z':_0x54c8}));return _0x22f1db;},_0x15d079=1e-8,_0x308fa2=()=>new Float32Array(0x10),_0x9383df=(_0x5f36ac,_0x1c5e09)=>_0x5f36ac[0x0]*_0x1c5e09[0x0]+_0x5f36ac[0x1]*_0x1c5e09[0x1]+_0x5f36ac[0x2]*_0x1c5e09[0x2],_0x49693e=(_0x286302,_0x518514)=>[_0x286302[0x0]-_0x518514[0x0],_0x286302[0x1]-_0x518514[0x1],_0x286302[0x2]-_0x518514[0x2]],_0x16c055=(_0x3a3796,_0x1a1b48)=>[_0x3a3796[0x1]*_0x1a1b48[0x2]-_0x3a3796[0x2]*_0x1a1b48[0x1],_0x3a3796[0x2]*_0x1a1b48[0x0]-_0x3a3796[0x0]*_0x1a1b48[0x2],_0x3a3796[0x0]*_0x1a1b48[0x1]-_0x3a3796[0x1]*_0x1a1b48[0x0]],_0x2b891f=_0x2570d3=>{const _0x4b49f8=_0x3a9ea2;let _0xc11088=Math['hypot'](_0x2570d3[0x0],_0x2570d3[0x1],_0x2570d3[0x2]);if(_0xc11088<=_0x15d079)throw Error(_0x4b49f8(0x407));return[_0x2570d3[0x0]/_0xc11088,_0x2570d3[0x1]/_0xc11088,_0x2570d3[0x2]/_0xc11088];},_0x343dc5=()=>{let _0x232ac8=_0x308fa2();return _0x232ac8[0x0]=0x1,_0x232ac8[0x5]=0x1,_0x232ac8[0xa]=0x1,_0x232ac8[0xf]=0x1,_0x232ac8;},_0x2f82db=(_0x2a00e4,_0x9c41d9)=>{let _0x68c739=_0x308fa2();for(let _0x5693a1=0x0;_0x5693a1<0x4;_0x5693a1+=0x1)for(let _0x46c1f2=0x0;_0x46c1f2<0x4;_0x46c1f2+=0x1){let _0x352589=0x0;for(let _0x819c3f=0x0;_0x819c3f<0x4;_0x819c3f+=0x1)_0x352589+=_0x2a00e4[_0x819c3f*0x4+_0x46c1f2]*_0x9c41d9[_0x5693a1*0x4+_0x819c3f];_0x68c739[_0x5693a1*0x4+_0x46c1f2]=_0x352589;}return _0x68c739;},_0x50b8ae=_0x1f272e=>{const _0x58f555=_0x3a9ea2;let _0x3704aa=Array[_0x58f555(0x18d)]({'length':0x4},(_0x5d71d1,_0x468f25)=>{let _0x49a796=new Float64Array(0x8);for(let _0x415350=0x0;_0x415350<0x4;_0x415350+=0x1)_0x49a796[_0x415350]=_0x1f272e[_0x415350*0x4+_0x468f25];return _0x49a796[_0x468f25+0x4]=0x1,_0x49a796;});for(let _0x2dacdc=0x0;_0x2dacdc<0x4;_0x2dacdc+=0x1){let _0x309770=_0x2dacdc;for(let _0x2b6d85=_0x2dacdc+0x1;_0x2b6d85<0x4;_0x2b6d85+=0x1)Math[_0x58f555(0x1ae)](_0x3704aa[_0x2b6d85][_0x2dacdc])>Math[_0x58f555(0x1ae)](_0x3704aa[_0x309770][_0x2dacdc])&&(_0x309770=_0x2b6d85);if(Math[_0x58f555(0x1ae)](_0x3704aa[_0x309770][_0x2dacdc])<=_0x15d079)throw Error(_0x58f555(0x2bc));_0x309770!==_0x2dacdc&&([_0x3704aa[_0x2dacdc],_0x3704aa[_0x309770]]=[_0x3704aa[_0x309770],_0x3704aa[_0x2dacdc]]);let _0x3b034e=_0x3704aa[_0x2dacdc][_0x2dacdc];for(let _0x188ae1=0x0;_0x188ae1<0x8;_0x188ae1+=0x1)_0x3704aa[_0x2dacdc][_0x188ae1]/=_0x3b034e;for(let _0x336a97=0x0;_0x336a97<0x4;_0x336a97+=0x1){if(_0x336a97===_0x2dacdc)continue;let _0x844a65=_0x3704aa[_0x336a97][_0x2dacdc];for(let _0x3045de=0x0;_0x3045de<0x8;_0x3045de+=0x1)_0x3704aa[_0x336a97][_0x3045de]-=_0x844a65*_0x3704aa[_0x2dacdc][_0x3045de];}}let _0x1e3569=_0x308fa2();for(let _0x69379b=0x0;_0x69379b<0x4;_0x69379b+=0x1)for(let _0xca8dc5=0x0;_0xca8dc5<0x4;_0xca8dc5+=0x1)_0x1e3569[_0xca8dc5*0x4+_0x69379b]=_0x3704aa[_0x69379b][_0xca8dc5+0x4];return _0x1e3569;},_0x2abd14=(_0x4b0da4,_0x4074c5,_0xc1181b)=>{let _0x2a8e7a=_0x2b891f(_0x49693e(_0x4b0da4,_0x4074c5)),_0x3cec99=_0x2b891f(_0x16c055(_0xc1181b,_0x2a8e7a)),_0x432885=_0x16c055(_0x2a8e7a,_0x3cec99),_0x266556=_0x343dc5();return _0x266556[0x0]=_0x3cec99[0x0],_0x266556[0x1]=_0x432885[0x0],_0x266556[0x2]=_0x2a8e7a[0x0],_0x266556[0x4]=_0x3cec99[0x1],_0x266556[0x5]=_0x432885[0x1],_0x266556[0x6]=_0x2a8e7a[0x1],_0x266556[0x8]=_0x3cec99[0x2],_0x266556[0x9]=_0x432885[0x2],_0x266556[0xa]=_0x2a8e7a[0x2],_0x266556[0xc]=-_0x9383df(_0x3cec99,_0x4b0da4),_0x266556[0xd]=-_0x9383df(_0x432885,_0x4b0da4),_0x266556[0xe]=-_0x9383df(_0x2a8e7a,_0x4b0da4),_0x266556;},_0x2a955b=(_0x29d6ba,_0x329011,_0xd66fa3,_0x2111e0)=>{const _0x2183c9=_0x3a9ea2;if(!(_0x29d6ba>0x0&&_0x29d6ba<Math['PI']))throw Error(_0x2183c9(0x187));if(!(_0x329011>0x0))throw Error(_0x2183c9(0x482));if(!(_0xd66fa3>0x0&&_0x2111e0>_0xd66fa3))throw Error(_0x2183c9(0x1a7));let _0x21cca2=0x1/Math[_0x2183c9(0x206)](_0x29d6ba/0x2),_0x11bf5d=_0x308fa2();return _0x11bf5d[0x0]=_0x21cca2/_0x329011,_0x11bf5d[0x5]=_0x21cca2,_0x11bf5d[0xa]=_0x2111e0/(_0xd66fa3-_0x2111e0),_0x11bf5d[0xb]=-0x1,_0x11bf5d[0xe]=_0xd66fa3*_0x2111e0/(_0xd66fa3-_0x2111e0),_0x11bf5d;},_0x1e6bd5=(_0x1b7270,_0x4ad5dc,_0x316e62,_0x19e0dd)=>{const _0x493623=_0x3a9ea2;if(!(_0x1b7270>0x0&&_0x4ad5dc>0x0))throw Error(_0x493623(0x3ef));if(!(_0x316e62>=0x0&&_0x19e0dd>_0x316e62))throw Error(_0x493623(0x41a));let _0x2234e4=_0x1b7270*_0x4ad5dc,_0x2c70be=_0x343dc5();return _0x2c70be[0x0]=0x2/_0x2234e4,_0x2c70be[0x5]=0x2/_0x1b7270,_0x2c70be[0xa]=0x1/(_0x316e62-_0x19e0dd),_0x2c70be[0xe]=_0x316e62/(_0x316e62-_0x19e0dd),_0x2c70be;},_0x1ec486=(_0x3fa3f3,_0x51d145,_0x4cd0cc)=>{let _0x1b8c2d=_0x343dc5();return _0x1b8c2d[0x0]=_0x3fa3f3,_0x1b8c2d[0x5]=_0x51d145,_0x1b8c2d[0xa]=_0x4cd0cc,_0x1b8c2d;},_0x7388f0=(_0x1436aa,_0x530354)=>{const _0xf99861=_0x3a9ea2;if(!(_0x530354>0x0)||!Number[_0xf99861(0x2ba)](_0x530354))throw Error(_0xf99861(0x435));let _0x238a3d=_0x1ec486(0x1,_0x530354,0x1);return _0x1436aa?_0x2f82db(_0x1436aa,_0x238a3d):_0x238a3d;},_0x514712=(_0x3b4ac2,_0x1dace8,_0x14d394=0x1)=>[_0x3b4ac2[0x0]*_0x1dace8[0x0]+_0x3b4ac2[0x4]*_0x1dace8[0x1]+_0x3b4ac2[0x8]*_0x1dace8[0x2]+_0x3b4ac2[0xc]*_0x14d394,_0x3b4ac2[0x1]*_0x1dace8[0x0]+_0x3b4ac2[0x5]*_0x1dace8[0x1]+_0x3b4ac2[0x9]*_0x1dace8[0x2]+_0x3b4ac2[0xd]*_0x14d394,_0x3b4ac2[0x2]*_0x1dace8[0x0]+_0x3b4ac2[0x6]*_0x1dace8[0x1]+_0x3b4ac2[0xa]*_0x1dace8[0x2]+_0x3b4ac2[0xe]*_0x14d394,_0x3b4ac2[0x3]*_0x1dace8[0x0]+_0x3b4ac2[0x7]*_0x1dace8[0x1]+_0x3b4ac2[0xb]*_0x1dace8[0x2]+_0x3b4ac2[0xf]*_0x14d394],_0x296522=(_0x27687b,_0x520e23,_0x5d037e,_0x156e98)=>{let _0x487996=_0x514712(_0x27687b,_0x520e23);if(_0x487996[0x3]<=_0x15d079)return null;let _0x2c06e2=0x1/_0x487996[0x3];return[(_0x487996[0x0]*_0x2c06e2*0.5+0.5)*_0x5d037e,(0.5-_0x487996[0x1]*_0x2c06e2*0.5)*_0x156e98,_0x487996[0x2]*_0x2c06e2];},_0x497e11=[0x0,0x1,0x2],_0x12d306=[0x0,0x0,0x0],_0x2f04ea=[0x0,0x1,0x0],_0x1e7e7a={'type':_0x3a9ea2(0x288),'fovYDegrees':0x2d,'near':0.01,'far':0x2710},_0x4de34b=Math['PI']/0xb4,_0x2d12f9=_0x33e1e5=>[_0x33e1e5[0x0],_0x33e1e5[0x1],_0x33e1e5[0x2]],_0x1c6925=_0x5e0474=>(_0x5e0474[_0x3a9ea2(0x2f5)],{..._0x5e0474}),_0x5404c6=_0x3cff41=>({'position':_0x2d12f9(_0x3cff41[_0x3a9ea2(0x1d2)]),'target':_0x2d12f9(_0x3cff41['target']),'up':_0x2d12f9(_0x3cff41['up']),'projection':_0x1c6925(_0x3cff41[_0x3a9ea2(0x1a4)])}),_0x4a163a=(_0x33147a,_0x5c86b3)=>[_0x33147a[0x0]-_0x5c86b3[0x0],_0x33147a[0x1]-_0x5c86b3[0x1],_0x33147a[0x2]-_0x5c86b3[0x2]],_0x1d5c14=(_0x4cd8a4,_0x269b22)=>[_0x4cd8a4[0x0]+_0x269b22[0x0],_0x4cd8a4[0x1]+_0x269b22[0x1],_0x4cd8a4[0x2]+_0x269b22[0x2]],_0x5d22a8=(_0x270c7c,_0x51bcde)=>[_0x270c7c[0x0]*_0x51bcde,_0x270c7c[0x1]*_0x51bcde,_0x270c7c[0x2]*_0x51bcde],_0x5be4d0=(_0x1fedef,_0x35e1e4)=>[_0x1fedef[0x1]*_0x35e1e4[0x2]-_0x1fedef[0x2]*_0x35e1e4[0x1],_0x1fedef[0x2]*_0x35e1e4[0x0]-_0x1fedef[0x0]*_0x35e1e4[0x2],_0x1fedef[0x0]*_0x35e1e4[0x1]-_0x1fedef[0x1]*_0x35e1e4[0x0]],_0x40ac16=_0x108108=>{let _0x52c43e=Math['hypot'](_0x108108[0x0],_0x108108[0x1],_0x108108[0x2]);return _0x52c43e===0x0?[0x0,0x0,0x0]:_0x5d22a8(_0x108108,0x1/_0x52c43e);},_0x5f0634=(_0x51a0ce,_0x15b303,_0x162b24)=>Math['min'](_0x162b24,Math['max'](_0x15b303,_0x51a0ce)),_0x399f6c=_0x51087e=>{const _0x4bd02d=_0x3a9ea2;if(!(_0x51087e[_0x4bd02d(0x17b)]>=0x0&&_0x51087e[_0x4bd02d(0x483)]>_0x51087e[_0x4bd02d(0x17b)]))throw Error(_0x4bd02d(0x41a));if(_0x51087e[_0x4bd02d(0x2f5)]===_0x4bd02d(0x288)&&!(_0x51087e['near']>0x0&&_0x51087e[_0x4bd02d(0x20e)]>0x0&&_0x51087e[_0x4bd02d(0x20e)]<0xb4))throw Error('透视相机参数无效。');if(_0x51087e[_0x4bd02d(0x2f5)]===_0x4bd02d(0x216)&&!(_0x51087e[_0x4bd02d(0x22a)]>0x0))throw Error(_0x4bd02d(0x2d9));},_0x22ac65=_0x38b975=>{const _0x1454a6=_0x3a9ea2;let _0x5ee272={'position':_0x38b975[_0x1454a6(0x465)]?.['position']?_0x2d12f9(_0x38b975[_0x1454a6(0x465)][_0x1454a6(0x1d2)]):_0x2d12f9(_0x497e11),'target':_0x38b975['state']?.[_0x1454a6(0x193)]?_0x2d12f9(_0x38b975[_0x1454a6(0x465)][_0x1454a6(0x193)]):_0x2d12f9(_0x12d306),'up':_0x38b975['state']?.['up']?_0x2d12f9(_0x38b975[_0x1454a6(0x465)]['up']):_0x2d12f9(_0x2f04ea),'projection':_0x38b975[_0x1454a6(0x465)]?.[_0x1454a6(0x1a4)]?_0x1c6925(_0x38b975[_0x1454a6(0x465)][_0x1454a6(0x1a4)]):_0x1c6925(_0x1e7e7a)};return _0x399f6c(_0x5ee272[_0x1454a6(0x1a4)]),_0x5ee272;};var _0xbc1613=class{['cameraState'];[_0x3a9ea2(0x343)];[_0x3a9ea2(0x1f6)];[_0x3a9ea2(0x396)];[_0x3a9ea2(0x233)];['minimumDistance'];[_0x3a9ea2(0x305)];['minimumPitch'];[_0x3a9ea2(0x3f6)];constructor(_0x58e7c1={}){const _0x44e88c=_0x3a9ea2;if(this[_0x44e88c(0x1f8)]=_0x22ac65(_0x58e7c1),this[_0x44e88c(0x343)]=_0x58e7c1[_0x44e88c(0x343)]??0x1,this[_0x44e88c(0x1f6)]=_0x58e7c1['rotateSpeed']??0.005,this[_0x44e88c(0x396)]=_0x58e7c1[_0x44e88c(0x396)]??0x1,this[_0x44e88c(0x233)]=_0x58e7c1[_0x44e88c(0x233)]??0.0015,this[_0x44e88c(0x40c)]=_0x58e7c1[_0x44e88c(0x40c)]??0.001,this[_0x44e88c(0x305)]=_0x58e7c1[_0x44e88c(0x305)]??0x1/0x0,this[_0x44e88c(0x331)]=(_0x58e7c1[_0x44e88c(0x408)]??-0x59)*_0x4de34b,this['maximumPitch']=(_0x58e7c1['maximumPitchDegrees']??0x59)*_0x4de34b,!(this['aspect']>0x0))throw Error(_0x44e88c(0x482));}get[_0x3a9ea2(0x465)](){const _0x3120bc=_0x3a9ea2;return _0x5404c6(this[_0x3120bc(0x1f8)]);}get[_0x3a9ea2(0x247)](){const _0x3c3e3a=_0x3a9ea2;let _0x1ba551=_0x2abd14(this[_0x3c3e3a(0x1f8)][_0x3c3e3a(0x1d2)],this['cameraState']['target'],this[_0x3c3e3a(0x1f8)]['up']),_0x59b9ba=this[_0x3c3e3a(0x19c)](),_0x4abd08=_0x2f82db(_0x59b9ba,_0x1ba551);return{'view':_0x1ba551,'projection':_0x59b9ba,'viewProjection':_0x4abd08,'inverseViewProjection':_0x50b8ae(_0x4abd08)};}[_0x3a9ea2(0x1ec)](_0x50349d){const _0x36338b=_0x3a9ea2;_0x399f6c(_0x50349d[_0x36338b(0x1a4)]),this[_0x36338b(0x1f8)]=_0x5404c6(_0x50349d);}[_0x3a9ea2(0x2aa)](_0x3080d2){const _0x4d3e1e=_0x3a9ea2;if(!(_0x3080d2>0x0)||!Number['isFinite'](_0x3080d2))throw Error('相机宽高比必须是大于\x200\x20的有限数。');this[_0x4d3e1e(0x343)]=_0x3080d2;}[_0x3a9ea2(0x260)](_0x48be6d){const _0x5679ff=_0x3a9ea2;if(_0x48be6d===this[_0x5679ff(0x1f8)][_0x5679ff(0x1a4)]['type'])return;let _0x385779=Math['hypot'](..._0x4a163a(this['cameraState'][_0x5679ff(0x1d2)],this[_0x5679ff(0x1f8)]['target']));if(_0x48be6d===_0x5679ff(0x216)){let _0x287078=this['cameraState'][_0x5679ff(0x1a4)],_0x3a0145=_0x287078[_0x5679ff(0x2f5)]===_0x5679ff(0x288)?_0x287078[_0x5679ff(0x20e)]*_0x4de34b:0x2d*_0x4de34b;this['cameraState'][_0x5679ff(0x1a4)]={'type':_0x48be6d,'height':0x2*_0x385779*Math[_0x5679ff(0x206)](_0x3a0145/0x2),'near':_0x287078[_0x5679ff(0x17b)],'far':_0x287078[_0x5679ff(0x483)]};return;}let _0x2f4f41=this[_0x5679ff(0x1f8)][_0x5679ff(0x1a4)],_0x2ac0bc=_0x2f4f41[_0x5679ff(0x2f5)]===_0x5679ff(0x216)?_0x2f4f41[_0x5679ff(0x22a)]/(0x2*Math[_0x5679ff(0x206)](0x2d*_0x4de34b/0x2)):_0x385779,_0x97ee17=_0x40ac16(_0x4a163a(this[_0x5679ff(0x1f8)][_0x5679ff(0x1d2)],this[_0x5679ff(0x1f8)][_0x5679ff(0x193)]));this['cameraState'][_0x5679ff(0x1d2)]=_0x1d5c14(this[_0x5679ff(0x1f8)][_0x5679ff(0x193)],_0x5d22a8(_0x97ee17,_0x2ac0bc)),this['cameraState']['projection']={'type':_0x48be6d,'fovYDegrees':0x2d,'near':_0x2f4f41[_0x5679ff(0x17b)],'far':_0x2f4f41[_0x5679ff(0x483)]};}[_0x3a9ea2(0x2e3)](_0x5509f6,_0x46d83b){const _0x5e9c51=_0x3a9ea2;let _0x1ac89c=_0x4a163a(this[_0x5e9c51(0x1f8)][_0x5e9c51(0x1d2)],this[_0x5e9c51(0x1f8)][_0x5e9c51(0x193)]),_0x38506b=Math[_0x5e9c51(0x1d3)](..._0x1ac89c);if(_0x38506b===0x0)return;let _0x339b27=Math[_0x5e9c51(0x417)](_0x1ac89c[0x0],_0x1ac89c[0x2])-_0x5509f6*this[_0x5e9c51(0x1f6)],_0x2ec3b8=_0x5f0634(Math[_0x5e9c51(0x241)](_0x1ac89c[0x1]/_0x38506b)+_0x46d83b*this['rotateSpeed'],this[_0x5e9c51(0x331)],this[_0x5e9c51(0x3f6)]),_0x15b18e=Math['cos'](_0x2ec3b8)*_0x38506b;this['cameraState'][_0x5e9c51(0x1d2)]=_0x1d5c14(this['cameraState']['target'],[Math[_0x5e9c51(0x476)](_0x339b27)*_0x15b18e,Math[_0x5e9c51(0x476)](_0x2ec3b8)*_0x38506b,Math[_0x5e9c51(0x277)](_0x339b27)*_0x15b18e]);}[_0x3a9ea2(0x25c)](_0xf097a0,_0x56a8e7,_0x287bb6){const _0x25ccc3=_0x3a9ea2;if(!(_0x287bb6>0x0))return;let _0x906456=_0x40ac16(_0x4a163a(this['cameraState'][_0x25ccc3(0x193)],this['cameraState'][_0x25ccc3(0x1d2)])),_0x59226=_0x40ac16(_0x5be4d0(_0x906456,this[_0x25ccc3(0x1f8)]['up'])),_0x367252=_0x40ac16(_0x5be4d0(_0x59226,_0x906456)),_0x520cdb=Math['hypot'](..._0x4a163a(this[_0x25ccc3(0x1f8)][_0x25ccc3(0x1d2)],this[_0x25ccc3(0x1f8)][_0x25ccc3(0x193)])),_0x370564=(this[_0x25ccc3(0x1f8)][_0x25ccc3(0x1a4)][_0x25ccc3(0x2f5)]===_0x25ccc3(0x216)?this[_0x25ccc3(0x1f8)]['projection'][_0x25ccc3(0x22a)]:0x2*_0x520cdb*Math['tan'](this['cameraState'][_0x25ccc3(0x1a4)]['fovYDegrees']*_0x4de34b/0x2))/_0x287bb6*this[_0x25ccc3(0x396)],_0x5e9045=_0x1d5c14(_0x5d22a8(_0x59226,-_0xf097a0*_0x370564),_0x5d22a8(_0x367252,_0x56a8e7*_0x370564));this[_0x25ccc3(0x1f8)][_0x25ccc3(0x1d2)]=_0x1d5c14(this[_0x25ccc3(0x1f8)]['position'],_0x5e9045),this['cameraState'][_0x25ccc3(0x193)]=_0x1d5c14(this[_0x25ccc3(0x1f8)][_0x25ccc3(0x193)],_0x5e9045);}[_0x3a9ea2(0x422)](_0x399ee9){const _0x5512e6=_0x3a9ea2;let _0x37ad67=Math[_0x5512e6(0x30b)](_0x399ee9*this[_0x5512e6(0x233)]);if(this[_0x5512e6(0x1f8)]['projection']['type']===_0x5512e6(0x216)){this[_0x5512e6(0x1f8)][_0x5512e6(0x1a4)]={...this[_0x5512e6(0x1f8)][_0x5512e6(0x1a4)],'height':Math['max'](this[_0x5512e6(0x40c)],this['cameraState'][_0x5512e6(0x1a4)][_0x5512e6(0x22a)]*_0x37ad67)};return;}let _0x4da2e1=_0x4a163a(this[_0x5512e6(0x1f8)]['position'],this['cameraState'][_0x5512e6(0x193)]),_0xa9d32c=_0x5f0634(Math[_0x5512e6(0x1d3)](..._0x4da2e1)*_0x37ad67,this[_0x5512e6(0x40c)],this[_0x5512e6(0x305)]);this[_0x5512e6(0x1f8)]['position']=_0x1d5c14(this[_0x5512e6(0x1f8)]['target'],_0x5d22a8(_0x40ac16(_0x4da2e1),_0xa9d32c));}[_0x3a9ea2(0x19c)](){const _0x3eb0f9=_0x3a9ea2;let _0x2c306a=this[_0x3eb0f9(0x1f8)][_0x3eb0f9(0x1a4)];return _0x2c306a['type']==='perspective'?_0x2a955b(_0x2c306a['fovYDegrees']*_0x4de34b,this[_0x3eb0f9(0x343)],_0x2c306a['near'],_0x2c306a[_0x3eb0f9(0x483)]):_0x1e6bd5(_0x2c306a[_0x3eb0f9(0x22a)],this[_0x3eb0f9(0x343)],_0x2c306a[_0x3eb0f9(0x17b)],_0x2c306a['far']);}};let _0x2e519d=0x615299,_0x1d54f7=_0x2e519d*(0x1-0x1/298.257223563),_0x560411=0x1-_0x1d54f7**0x2/_0x2e519d**0x2,_0xb0b448=_0x364ff6=>_0x364ff6*Math['PI']/0xb4,_0x118267=(_0x374d1d,_0x384af2,_0x2d6e4c)=>{const _0x1ace52=_0x3a9ea2;let _0x1ef485=Math[_0x1ace52(0x476)](_0x384af2),_0x1d227b=Math[_0x1ace52(0x277)](_0x384af2),_0x34cbf5=Math['sin'](_0x374d1d),_0x34fb99=Math['cos'](_0x374d1d),_0x37cb71=_0x2e519d/Math[_0x1ace52(0x183)](0x1-_0x560411*_0x1ef485*_0x1ef485);return[(_0x37cb71+_0x2d6e4c)*_0x1d227b*_0x34fb99,(_0x37cb71+_0x2d6e4c)*_0x1d227b*_0x34cbf5,(_0x37cb71*(0x1-_0x560411)+_0x2d6e4c)*_0x1ef485];},_0xae363a=(_0x1476ee,_0x39aa1d,_0x117f75)=>{const _0x3670aa=_0x3a9ea2;if(!Number[_0x3670aa(0x2ba)](_0x1476ee)||!Number[_0x3670aa(0x2ba)](_0x39aa1d)||_0x1476ee===_0x39aa1d)throw Error(_0x117f75+'\x20axis\x20must\x20contain\x20two\x20different\x20finite\x20endpoints.\x20'+_0x117f75+_0x3670aa(0x40e));},_0x46fb2a=(_0x2888c1,_0xac3b0d=0x1)=>{const _0x11c071=_0x3a9ea2;let _0x9cfbf9=_0xb0b448(_0x2888c1[_0x11c071(0x1f2)][_0x11c071(0x239)]),_0x2b0016=_0xb0b448(_0x2888c1[_0x11c071(0x1f2)][_0x11c071(0x1e7)]),_0x1b5815=_0xb0b448(_0x2888c1['zAxis'][_0x11c071(0x239)]),_0x328d87=_0xb0b448(_0x2888c1[_0x11c071(0x46c)][_0x11c071(0x1e7)]);_0xae363a(_0x9cfbf9,_0x2b0016,_0x11c071(0x21b)),_0xae363a(_0x1b5815,_0x328d87,'Latitude\x20/\x20纬度');let _0x13bbbd=_0x2888c1[_0x11c071(0x42c)]['start'],_0x20198a=_0x2888c1[_0x11c071(0x42c)]['end'];if(_0xae363a(_0x13bbbd,_0x20198a,'Height\x20/\x20高度'),!(_0xac3b0d>0x0)||!Number[_0x11c071(0x2ba)](_0xac3b0d))throw Error(_0x11c071(0x2d4));let _0x11d4ef=_0x13bbbd+(_0x20198a-_0x13bbbd)*_0xac3b0d,_0x11bad4=(_0x9cfbf9+_0x2b0016)/0x2,_0x38739d=(_0x1b5815+_0x328d87)/0x2,_0x42d512=_0x118267(_0x11bad4,_0x38739d,0x0),_0x3d47e5=Math[_0x11c071(0x1ae)](_0x2b0016-_0x9cfbf9)*_0x2e519d*Math[_0x11c071(0x1ac)](0.01,Math[_0x11c071(0x277)](_0x38739d)),_0x337244=Math[_0x11c071(0x1ae)](_0x328d87-_0x1b5815)*_0x2e519d,_0x1f21fe=Math[_0x11c071(0x1ac)](_0x3d47e5,_0x337244);if(!(_0x1f21fe>0x0)||!Number[_0x11c071(0x2ba)](_0x1f21fe))throw Error(_0x11c071(0x410));let _0x2b8300=[0x1/0x0,0x1/0x0,0x1/0x0],_0x212aef=[-0x1/0x0,-0x1/0x0,-0x1/0x0];for(let _0x262994=0x0;_0x262994<=0x8;_0x262994+=0x1){let _0x443493=_0x1b5815+(_0x328d87-_0x1b5815)*_0x262994/0x8;for(let _0x16c995=0x0;_0x16c995<=0x8;_0x16c995+=0x1){let _0x33b166=_0x9cfbf9+(_0x2b0016-_0x9cfbf9)*_0x16c995/0x8;for(let _0x57f3ba of[_0x13bbbd,_0x11d4ef]){let _0x3cbe92=_0x118267(_0x33b166,_0x443493,_0x57f3ba);for(let _0x19941b=0x0;_0x19941b<0x3;_0x19941b+=0x1){let _0x40c48f=(_0x3cbe92[_0x19941b]-_0x42d512[_0x19941b])/_0x1f21fe;_0x2b8300[_0x19941b]=Math['min'](_0x2b8300[_0x19941b],_0x40c48f),_0x212aef[_0x19941b]=Math['max'](_0x212aef[_0x19941b],_0x40c48f);}}}}let _0x34e4a7=_0x212aef[_0x11c071(0x42f)]((_0x3c4317,_0xb07ecd)=>_0x3c4317-_0x2b8300[_0xb07ecd]);if(_0x34e4a7[_0x11c071(0x3fd)](_0x258101=>!(_0x258101>0x0)||!Number[_0x11c071(0x2ba)](_0x258101)))throw Error('Geographic\x20volume\x20proxy\x20bounds\x20are\x20invalid.\x20地理体积代理范围无效。');return{'centerEcef':_0x42d512,'normalizationMeters':_0x1f21fe,'proxyModelMatrix':[_0x34e4a7[0x0],0x0,0x0,0x0,0x0,_0x34e4a7[0x1],0x0,0x0,0x0,0x0,_0x34e4a7[0x2],0x0,_0x2b8300[0x0],_0x2b8300[0x1],_0x2b8300[0x2],0x1],'transform':{'mode':_0x11c071(0x2ac),'centerEcefScaled':[_0x42d512[0x0]/_0x1f21fe,_0x42d512[0x1]/_0x1f21fe,_0x42d512[0x2]/_0x1f21fe],'semiMajorAxisScaled':_0x2e519d/_0x1f21fe,'semiMinorAxisScaled':_0x1d54f7/_0x1f21fe,'longitudeRadians':[_0x9cfbf9,_0x2b0016],'latitudeRadians':[_0x1b5815,_0x328d87],'heightScaled':[_0x13bbbd/_0x1f21fe,_0x11d4ef/_0x1f21fe]}};},_0x195d5e=(_0x37b158,_0x41e213)=>[(_0x37b158[0x0]-_0x41e213[_0x3a9ea2(0x29a)][0x0])/_0x41e213['normalizationMeters'],(_0x37b158[0x1]-_0x41e213[_0x3a9ea2(0x29a)][0x1])/_0x41e213[_0x3a9ea2(0x391)],(_0x37b158[0x2]-_0x41e213[_0x3a9ea2(0x29a)][0x2])/_0x41e213['normalizationMeters']],_0x44bf1f=(_0x3aa2b3,_0x2c56eb)=>Number[_0x3a9ea2(0x2c9)](_0x3aa2b3)||_0x2c56eb!==void 0x0&&_0x3aa2b3===_0x2c56eb,_0x3612fd=(_0x10c75b,_0x863c89)=>_0x10c75b[_0x3a9ea2(0x239)]===_0x10c75b['end']?0x0:(_0x863c89-_0x10c75b[_0x3a9ea2(0x239)])/(_0x10c75b[_0x3a9ea2(0x1e7)]-_0x10c75b[_0x3a9ea2(0x239)]),_0xbb5112=_0xfb3ce9=>{const _0x31cb53=_0x3a9ea2;if(!_0xfb3ce9['id'])throw Error(_0x31cb53(0x210));if(_0xfb3ce9['path'][_0x31cb53(0x2e8)]<0x4||_0xfb3ce9[_0x31cb53(0x284)][_0x31cb53(0x2e8)]%0x2!=0x0)throw Error(_0x31cb53(0x1d1)+_0xfb3ce9['id']+_0x31cb53(0x3cb));if(_0xfb3ce9[_0x31cb53(0x23b)][_0x31cb53(0x2e8)]<0x2)throw Error(_0x31cb53(0x1d1)+_0xfb3ce9['id']+'\x20至少需要两个高度层。');let _0x1c5cb2=_0xfb3ce9[_0x31cb53(0x284)][_0x31cb53(0x2e8)]/0x2;if(_0xfb3ce9['values'][_0x31cb53(0x2e8)]!==_0x1c5cb2*_0xfb3ce9[_0x31cb53(0x23b)][_0x31cb53(0x2e8)])throw Error(_0x31cb53(0x1d1)+_0xfb3ce9['id']+_0x31cb53(0x33e));if(_0xfb3ce9[_0x31cb53(0x23e)]!==void 0x0&&(!(_0xfb3ce9['opacity']>=0x0&&_0xfb3ce9['opacity']<=0x1)||!Number[_0x31cb53(0x2ba)](_0xfb3ce9[_0x31cb53(0x23e)])))throw Error('路线剖面\x20'+_0xfb3ce9['id']+_0x31cb53(0x444));for(let _0x4d8904 of _0xfb3ce9[_0x31cb53(0x284)])if(!Number['isFinite'](_0x4d8904))throw Error('路线剖面\x20'+_0xfb3ce9['id']+_0x31cb53(0x32f));for(let _0x2af138 of _0xfb3ce9[_0x31cb53(0x23b)])if(!Number['isFinite'](_0x2af138))throw Error('路线剖面\x20'+_0xfb3ce9['id']+_0x31cb53(0x397));return _0x1c5cb2;},_0x3c3d68=(_0x11a6ba,_0x56cfc7,_0x425a29)=>{const _0x1af37c=_0x3a9ea2;let _0x147678=new Float32Array(_0x56cfc7*_0x11a6ba[_0x1af37c(0x23b)]['length']*0x3);for(let _0x55a4a3=0x0;_0x55a4a3<_0x11a6ba[_0x1af37c(0x23b)][_0x1af37c(0x2e8)];_0x55a4a3+=0x1)for(let _0x44a1b8=0x0;_0x44a1b8<_0x56cfc7;_0x44a1b8+=0x1){let _0x143a14=(_0x55a4a3*_0x56cfc7+_0x44a1b8)*0x3;_0x147678[_0x143a14]=_0x3612fd(_0x425a29[_0x1af37c(0x1f2)],_0x11a6ba[_0x1af37c(0x284)][_0x44a1b8*0x2]),_0x147678[_0x143a14+0x1]=_0x3612fd(_0x425a29[_0x1af37c(0x42c)],_0x11a6ba[_0x1af37c(0x23b)][_0x55a4a3]),_0x147678[_0x143a14+0x2]=_0x3612fd(_0x425a29[_0x1af37c(0x46c)],_0x11a6ba[_0x1af37c(0x284)][_0x44a1b8*0x2+0x1]);}return _0x147678;},_0x2dbded=_0x3b5387=>{const _0x4452b2=_0x3a9ea2;let _0x4f80af=new Float32Array(_0x3b5387[_0x4452b2(0x1a1)][_0x4452b2(0x2e8)]);for(let _0x3643b2=0x0;_0x3643b2<_0x3b5387[_0x4452b2(0x1a1)]['length'];_0x3643b2+=0x1){let _0x53c5ca=_0x3b5387[_0x4452b2(0x1a1)][_0x3643b2];_0x4f80af[_0x3643b2]=_0x44bf1f(_0x53c5ca,_0x3b5387['noData'])?NaN:_0x53c5ca;}return _0x4f80af;},_0x316ae1=(_0x6e4c5f,_0x3ec6be)=>{let _0x20ff07=new Uint32Array((_0x6e4c5f-0x1)*(_0x3ec6be-0x1)*0x6),_0x479792=0x0;for(let _0x31068f=0x0;_0x31068f<_0x3ec6be-0x1;_0x31068f+=0x1)for(let _0x9bbcc2=0x0;_0x9bbcc2<_0x6e4c5f-0x1;_0x9bbcc2+=0x1){let _0x567a1e=_0x31068f*_0x6e4c5f+_0x9bbcc2,_0x51bea1=_0x567a1e+0x1,_0x417469=_0x567a1e+_0x6e4c5f,_0x5942cf=_0x417469+0x1;_0x20ff07[_0x479792]=_0x567a1e,_0x20ff07[_0x479792+0x1]=_0x51bea1,_0x20ff07[_0x479792+0x2]=_0x417469,_0x20ff07[_0x479792+0x3]=_0x417469,_0x20ff07[_0x479792+0x4]=_0x51bea1,_0x20ff07[_0x479792+0x5]=_0x5942cf,_0x479792+=0x6;}return _0x20ff07;},_0x586fc3=(_0xa54f34,_0x5ac2ed)=>{const _0x5c2d23=_0x3a9ea2;let _0x45f2ce=_0xbb5112(_0xa54f34);return{'id':_0xa54f34['id'],'positions':_0x3c3d68(_0xa54f34,_0x45f2ce,_0x5ac2ed),'values':_0x2dbded(_0xa54f34),'indices':_0x316ae1(_0x45f2ce,_0xa54f34[_0x5c2d23(0x23b)]['length']),'opacity':_0xa54f34[_0x5c2d23(0x23e)]??0x1,'depthMode':_0xa54f34['depthMode']??'scene','revision':_0xa54f34['revision']};};var _0x133e48='struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VolumeParams\x20{\x0a\x20\x20\x20\x20dimensions:\x20vec4u,\x0a\x20\x20\x20\x20brickInterior:\x20vec4u,\x0a\x20\x20\x20\x20brickCount:\x20vec4u,\x0a\x20\x20\x20\x20atlasSlots:\x20vec4u,\x0a\x20\x20\x20\x20atlasDimensions:\x20vec4u,\x0a\x20\x20\x20\x20valueMeta:\x20vec4f,\x0a}\x0a\x0astruct\x20PageTable\x20{\x0a\x20\x20\x20\x20values:\x20array<vec4u>,\x0a}\x0a\x0astruct\x20FloatValues\x20{\x0a\x20\x20\x20\x20values:\x20array<f32>,\x0a}\x0a\x0astruct\x20Colors\x20{\x0a\x20\x20\x20\x20values:\x20array<vec4f>,\x0a}\x0a\x0astruct\x20VolumeSample\x20{\x0a\x20\x20\x20\x20value:\x20f32,\x0a\x20\x20\x20\x20valid:\x20bool,\x0a}\x0a\x0astruct\x20RayInterval\x20{\x0a\x20\x20\x20\x20minimum:\x20f32,\x0a\x20\x20\x20\x20maximum:\x20f32,\x0a\x20\x20\x20\x20valid:\x20bool,\x0a}\x0a\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneParams;\x0a@group(0)\x20@binding(1)\x20var\x20sceneDepth:\x20texture_depth_2d;\x0a@group(1)\x20@binding(0)\x20var\x20volumeAtlas0:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(1)\x20var\x20volumeAtlas1:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(2)\x20var\x20volumeAtlas2:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(3)\x20var\x20volumeAtlas3:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(4)\x20var\x20volumeAtlas4:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(5)\x20var\x20volumeAtlas5:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(6)\x20var\x20volumeAtlas6:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(7)\x20var\x20volumeAtlas7:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(8)\x20var<storage,\x20read>\x20pageTable:\x20PageTable;\x0a@group(1)\x20@binding(9)\x20var<uniform>\x20volume:\x20VolumeParams;\x0a@group(2)\x20@binding(0)\x20var<storage,\x20read>\x20colorStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(1)\x20var<storage,\x20read>\x20colorStopColors:\x20Colors;\x0a@group(2)\x20@binding(2)\x20var<storage,\x20read>\x20opacityStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(3)\x20var<storage,\x20read>\x20opacityStopAlphas:\x20FloatValues;\x0a\x0afn\x20invalidVolumeSample()\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(0.0,\x20false);\x0a}\x0a\x0afn\x20validVolumeSample(value:\x20f32)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(value,\x20true);\x0a}\x0a\x0afn\x20transformPoint(matrix:\x20mat4x4f,\x20point:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20let\x20transformed\x20=\x20matrix\x20*\x20vec4f(point,\x201.0);\x0a\x20\x20\x20\x20return\x20transformed.xyz\x20/\x20transformed.w;\x0a}\x0a\x0afn\x20reconstructWorldPosition(ndc:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20return\x20transformPoint(scene.inverseViewProjection,\x20ndc);\x0a}\x0a\x0a//\x20地理模式将局部\x20ECEF\x20采样点反算为经纬高归一化坐标;代理盒仅限制射线范围,不决定体积形状。\x0a//\x20Geographic\x20mode\x20converts\x20each\x20local\x20ECEF\x20sample\x20back\x20to\x20normalized\x20longitude,\x20latitude,\x20and\x20altitude;\x20the\x20proxy\x20box\x20only\x20limits\x20the\x20ray\x20interval\x20and\x20does\x20not\x20define\x20the\x20volume\x20shape.\x0afn\x20worldToVolume(worldPosition:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20transformPoint(scene.inverseModelMatrix,\x20worldPosition);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20ecef\x20=\x20worldPosition\x20+\x20scene.geographic0.yzw;\x0a\x20\x20\x20\x20let\x20semiMajor\x20=\x20scene.geographic1.x;\x0a\x20\x20\x20\x20let\x20semiMinor\x20=\x20scene.geographic1.y;\x0a\x20\x20\x20\x20let\x20eccentricitySquared\x20=\x201.0\x20-\x20semiMinor\x20*\x20semiMinor\x20/\x20(semiMajor\x20*\x20semiMajor);\x0a\x20\x20\x20\x20let\x20secondEccentricitySquared\x20=\x20(semiMajor\x20*\x20semiMajor\x20-\x20semiMinor\x20*\x20semiMinor)\x20/\x20(semiMinor\x20*\x20semiMinor);\x0a\x20\x20\x20\x20let\x20horizontal\x20=\x20length(ecef.xy);\x0a\x20\x20\x20\x20let\x20theta\x20=\x20atan2(ecef.z\x20*\x20semiMajor,\x20horizontal\x20*\x20semiMinor);\x0a\x20\x20\x20\x20let\x20thetaSin\x20=\x20sin(theta);\x0a\x20\x20\x20\x20let\x20thetaCos\x20=\x20cos(theta);\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20atan2(\x0a\x20\x20\x20\x20\x20\x20\x20\x20ecef.z\x20+\x20secondEccentricitySquared\x20*\x20semiMinor\x20*\x20thetaSin\x20*\x20thetaSin\x20*\x20thetaSin,\x0a\x20\x20\x20\x20\x20\x20\x20\x20horizontal\x20-\x20eccentricitySquared\x20*\x20semiMajor\x20*\x20thetaCos\x20*\x20thetaCos\x20*\x20thetaCos\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20let\x20latitudeSin\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20let\x20primeVerticalRadius\x20=\x20semiMajor\x20/\x20sqrt(1.0\x20-\x20eccentricitySquared\x20*\x20latitudeSin\x20*\x20latitudeSin);\x0a\x20\x20\x20\x20let\x20height\x20=\x20horizontal\x20/\x20max(0.000001,\x20abs(cos(latitude)))\x20-\x20primeVerticalRadius;\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20atan2(ecef.y,\x20ecef.x);\x0a\x20\x20\x20\x20return\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x20(longitude\x20-\x20scene.geographic1.z)\x20/\x20(scene.geographic1.w\x20-\x20scene.geographic1.z),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(height\x20-\x20scene.geographic2.z)\x20/\x20(scene.geographic2.w\x20-\x20scene.geographic2.z),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(latitude\x20-\x20scene.geographic2.x)\x20/\x20(scene.geographic2.y\x20-\x20scene.geographic2.x)\x0a\x20\x20\x20\x20);\x0a}\x0a\x0afn\x20proxyToVolume(proxyPosition:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20proxyPosition;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20worldToVolume(transformPoint(scene.modelMatrix,\x20proxyPosition));\x0a}\x0a\x0afn\x20isInsideVolume(position:\x20vec3f)\x20->\x20bool\x20{\x0a\x20\x20\x20\x20return\x20all(position\x20>=\x20scene.clipMinimum.xyz)\x20&&\x20all(position\x20<=\x20scene.clipMaximum.xyz);\x0a}\x0a\x0afn\x20intersectAxis(origin:\x20f32,\x20direction:\x20f32,\x20minimumValue:\x20f32,\x20maximumValue:\x20f32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20if\x20(abs(direction)\x20<\x200.000001)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(origin\x20<\x20minimumValue\x20||\x20origin\x20>\x20maximumValue)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(1.0,\x20-1.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(-1e20,\x201e20);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20first\x20=\x20(minimumValue\x20-\x20origin)\x20/\x20direction;\x0a\x20\x20\x20\x20let\x20second\x20=\x20(maximumValue\x20-\x20origin)\x20/\x20direction;\x0a\x20\x20\x20\x20return\x20vec2f(min(first,\x20second),\x20max(first,\x20second));\x0a}\x0a\x0afn\x20intersectClipBox(origin:\x20vec3f,\x20direction:\x20vec3f)\x20->\x20RayInterval\x20{\x0a\x20\x20\x20\x20let\x20x\x20=\x20intersectAxis(origin.x,\x20direction.x,\x20scene.clipMinimum.x,\x20scene.clipMaximum.x);\x0a\x20\x20\x20\x20let\x20y\x20=\x20intersectAxis(origin.y,\x20direction.y,\x20scene.clipMinimum.y,\x20scene.clipMaximum.y);\x0a\x20\x20\x20\x20let\x20z\x20=\x20intersectAxis(origin.z,\x20direction.z,\x20scene.clipMinimum.z,\x20scene.clipMaximum.z);\x0a\x20\x20\x20\x20let\x20minimumDistance\x20=\x20max(max(x.x,\x20y.x),\x20z.x);\x0a\x20\x20\x20\x20let\x20maximumDistance\x20=\x20min(min(x.y,\x20y.y),\x20z.y);\x0a\x20\x20\x20\x20return\x20RayInterval(max(0.0,\x20minimumDistance),\x20maximumDistance,\x20maximumDistance\x20>=\x20max(0.0,\x20minimumDistance));\x0a}\x0a\x0afn\x20getPageIndex(brick:\x20vec3u)\x20->\x20u32\x20{\x0a\x20\x20\x20\x20return\x20brick.x\x20+\x20brick.y\x20*\x20volume.brickCount.x\x20+\x20brick.z\x20*\x20volume.brickCount.x\x20*\x20volume.brickCount.y;\x0a}\x0a\x0afn\x20getSlotCoordinate(slotIndex:\x20u32)\x20->\x20vec3u\x20{\x0a\x20\x20\x20\x20let\x20layerSize\x20=\x20volume.atlasSlots.x\x20*\x20volume.atlasSlots.y;\x0a\x20\x20\x20\x20let\x20z\x20=\x20slotIndex\x20/\x20layerSize;\x0a\x20\x20\x20\x20let\x20remainder\x20=\x20slotIndex\x20-\x20z\x20*\x20layerSize;\x0a\x20\x20\x20\x20let\x20y\x20=\x20remainder\x20/\x20volume.atlasSlots.x;\x0a\x20\x20\x20\x20let\x20x\x20=\x20remainder\x20-\x20y\x20*\x20volume.atlasSlots.x;\x0a\x20\x20\x20\x20return\x20vec3u(x,\x20y,\x20z);\x0a}\x0a\x0afn\x20loadAtlasValue(atlasIndex:\x20u32,\x20coordinate:\x20vec3i)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x200u)\x20{\x20return\x20textureLoad(volumeAtlas0,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x201u)\x20{\x20return\x20textureLoad(volumeAtlas1,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x202u)\x20{\x20return\x20textureLoad(volumeAtlas2,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x203u)\x20{\x20return\x20textureLoad(volumeAtlas3,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x204u)\x20{\x20return\x20textureLoad(volumeAtlas4,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x205u)\x20{\x20return\x20textureLoad(volumeAtlas5,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x206u)\x20{\x20return\x20textureLoad(volumeAtlas6,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20return\x20textureLoad(volumeAtlas7,\x20coordinate,\x200).r;\x0a}\x0a\x0afn\x20loadAtlasVoxel(voxel:\x20vec3i,\x20owningBrick:\x20vec3u)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20page\x20=\x20pageTable.values[getPageIndex(owningBrick)];\x0a\x0a\x20\x20\x20\x20if\x20(page.x\x20==\x200u\x20||\x20page.z\x20==\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20slot\x20=\x20getSlotCoordinate(page.x\x20-\x201u);\x0a\x20\x20\x20\x20let\x20physicalBrick\x20=\x20volume.brickInterior.xyz\x20+\x20vec3u(2u);\x0a\x20\x20\x20\x20let\x20brickStart\x20=\x20vec3i(owningBrick\x20*\x20volume.brickInterior.xyz);\x0a\x20\x20\x20\x20let\x20local\x20=\x20voxel\x20-\x20brickStart\x20+\x20vec3i(1);\x0a\x20\x20\x20\x20let\x20atlasCoordinate\x20=\x20vec3i(slot\x20*\x20physicalBrick)\x20+\x20local;\x0a\x20\x20\x20\x20let\x20value\x20=\x20loadAtlasValue(page.w,\x20atlasCoordinate);\x0a\x0a\x20\x20\x20\x20if\x20(value\x20!=\x20value\x20||\x20(volume.valueMeta.y\x20>\x200.5\x20&&\x20value\x20==\x20volume.valueMeta.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20validVolumeSample(value);\x0a}\x0a\x0afn\x20sampleVolume(modelPosition:\x20vec3f)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(modelPosition,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20normalized\x20*\x20vec3f(volume.dimensions.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20baseVoxel\x20=\x20vec3i(floor(voxel));\x0a\x20\x20\x20\x20let\x20maximumVoxel\x20=\x20vec3i(volume.dimensions.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20nextVoxel\x20=\x20min(baseVoxel\x20+\x20vec3i(1),\x20maximumVoxel);\x0a\x20\x20\x20\x20let\x20fraction\x20=\x20voxel\x20-\x20vec3f(baseVoxel);\x0a\x20\x20\x20\x20let\x20owningBrick\x20=\x20min(vec3u(max(baseVoxel,\x20vec3i(0)))\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20c000\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20baseVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c100\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c010\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c110\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c001\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c101\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c011\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c111\x20=\x20loadAtlasVoxel(nextVoxel,\x20owningBrick);\x0a\x0a\x20\x20\x20\x20if\x20(!c000.valid\x20||\x20!c100.valid\x20||\x20!c010.valid\x20||\x20!c110.valid\x20||\x20!c001.valid\x20||\x20!c101.valid\x20||\x20!c011.valid\x20||\x20!c111.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20bottom0\x20=\x20mix(c000.value,\x20c100.value,\x20fraction.x);\x0a\x20\x20\x20\x20let\x20bottom1\x20=\x20mix(c010.value,\x20c110.value,\x20fraction.x);\x0a\x20\x20\x20\x20let\x20top0\x20=\x20mix(c001.value,\x20c101.value,\x20fraction.x);\x0a\x20\x20\x20\x20let\x20top1\x20=\x20mix(c011.value,\x20c111.value,\x20fraction.x);\x0a\x20\x20\x20\x20return\x20validVolumeSample(mix(mix(bottom0,\x20bottom1,\x20fraction.y),\x20mix(top0,\x20top1,\x20fraction.y),\x20fraction.z));\x0a}\x0a\x0a//\x20体积分步只读取当前最近体素,避免对最终透明的样本执行八次纹理读取;高精度切面仍使用独立的三线性采样。\x0a//\x20Raymarch\x20steps\x20read\x20the\x20nearest\x20voxel\x20so\x20transparent\x20samples\x20avoid\x20eight\x20texture\x20loads;\x20high-detail\x20slices\x20keep\x20their\x20separate\x20trilinear\x20sampling.\x0afn\x20sampleVolumeNearest(modelPosition:\x20vec3f)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(modelPosition,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20maximumVoxel\x20=\x20volume.dimensions.xyz\x20-\x20vec3u(1u);\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20vec3i(round(normalized\x20*\x20vec3f(maximumVoxel)));\x0a\x20\x20\x20\x20let\x20owningBrick\x20=\x20min(vec3u(max(voxel,\x20vec3i(0)))\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20return\x20loadAtlasVoxel(voxel,\x20owningBrick);\x0a}\x0a\x0afn\x20sampleColor(value:\x20f32)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.x);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20colorStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20colorStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20colorStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ratio\x20=\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(colorStopColors.values[index],\x20colorStopColors.values[index\x20+\x201u],\x20ratio);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20colorStopColors.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20sampleOpacity(value:\x20f32)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.y);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20opacityStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20opacityStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20opacityStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ratio\x20=\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(opacityStopAlphas.values[index],\x20opacityStopAlphas.values[index\x20+\x201u],\x20ratio);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20opacityStopAlphas.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20nextBrickAxisDistance(position:\x20f32,\x20direction:\x20f32,\x20minimumValue:\x20f32,\x20maximumValue:\x20f32)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20if\x20(direction\x20>\x200.000001)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20max(scene.render.w,\x20(maximumValue\x20-\x20position)\x20/\x20direction\x20+\x20scene.render.w\x20*\x200.25);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(direction\x20<\x20-0.000001)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20max(scene.render.w,\x20(minimumValue\x20-\x20position)\x20/\x20direction\x20+\x20scene.render.w\x20*\x200.25);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x201e20;\x0a}\x0a\x0afn\x20getEmptyBrickSkipDistance(position:\x20vec3f,\x20direction:\x20vec3f)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(position,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20maximumVoxel\x20=\x20volume.dimensions.xyz\x20-\x20vec3u(1u);\x0a\x20\x20\x20\x20let\x20safeMaximumVoxel\x20=\x20max(maximumVoxel,\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20vec3u(floor(normalized\x20*\x20vec3f(maximumVoxel)));\x0a\x20\x20\x20\x20let\x20brick\x20=\x20min(voxel\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20page\x20=\x20pageTable.values[getPageIndex(brick)];\x0a\x0a\x20\x20\x20\x20if\x20(page.x\x20!=\x200u\x20&&\x20page.z\x20!=\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x200.0;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20minimumPosition\x20=\x20vec3f(brick\x20*\x20volume.brickInterior.xyz)\x20/\x20vec3f(safeMaximumVoxel);\x0a\x20\x20\x20\x20let\x20maximumPosition\x20=\x20vec3f(min((brick\x20+\x20vec3u(1u))\x20*\x20volume.brickInterior.xyz,\x20maximumVoxel))\x20/\x20vec3f(safeMaximumVoxel);\x0a\x20\x20\x20\x20return\x20min(\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextBrickAxisDistance(normalized.x,\x20direction.x,\x20minimumPosition.x,\x20maximumPosition.x),\x0a\x20\x20\x20\x20\x20\x20\x20\x20min(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nextBrickAxisDistance(normalized.y,\x20direction.y,\x20minimumPosition.y,\x20maximumPosition.y),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nextBrickAxisDistance(normalized.z,\x20direction.z,\x20minimumPosition.z,\x20maximumPosition.z)\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20);\x0a}\x0a\x0afn\x20getDepthDistance(pixel:\x20vec2i,\x20ndcXY:\x20vec2f,\x20rayOrigin:\x20vec3f,\x20rayDirection:\x20vec3f)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20depth\x20=\x20textureLoad(sceneDepth,\x20pixel,\x200);\x0a\x0a\x20\x20\x20\x20if\x20(depth\x20>=\x201.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x201e20;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20depthWorld\x20=\x20reconstructWorldPosition(vec3f(ndcXY,\x20depth));\x0a\x20\x20\x20\x20let\x20depthModel\x20=\x20transformPoint(scene.inverseModelMatrix,\x20depthWorld);\x0a\x20\x20\x20\x20return\x20max(0.0,\x20dot(depthModel\x20-\x20rayOrigin,\x20rayDirection));\x0a}\x0a\x0afn\x20raymarchComposite(origin:\x20vec3f,\x20direction:\x20vec3f,\x20interval:\x20RayInterval)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20var\x20accumulated\x20=\x20vec4f(0.0);\x0a\x20\x20\x20\x20var\x20distance\x20=\x20interval.minimum;\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20<\x204096u\x20&&\x20distance\x20<=\x20interval.maximum\x20&&\x20accumulated.a\x20<\x200.985;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20proxyPosition\x20=\x20origin\x20+\x20direction\x20*\x20distance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20skipDistance\x20=\x20select(0.0,\x20getEmptyBrickSkipDistance(proxyPosition,\x20direction),\x20scene.geographic0.x\x20<\x200.5);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(skipDistance\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20skipDistance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20volumePosition\x20=\x20proxyToVolume(proxyPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!isInsideVolume(volumePosition))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20sample\x20=\x20sampleVolumeNearest(volumePosition);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sample.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sampleAlpha\x20=\x20sampleOpacity(sample.value);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sampleAlpha\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20color\x20=\x20sampleColor(sample.value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20alpha\x20=\x201.0\x20-\x20exp(-sampleAlpha\x20*\x20scene.render.z\x20*\x20scene.render.w);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20contribution\x20=\x20(1.0\x20-\x20accumulated.a)\x20*\x20alpha;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20accumulated\x20=\x20vec4f(accumulated.rgb\x20+\x20color.rgb\x20*\x20contribution,\x20accumulated.a\x20+\x20contribution);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20finalAlpha\x20=\x20accumulated.a\x20*\x20scene.render.y\x20*\x20scene.transfer.z;\x0a\x20\x20\x20\x20return\x20vec4f(accumulated.rgb\x20*\x20scene.render.y\x20*\x20scene.transfer.z,\x20finalAlpha);\x0a}\x0a\x0afn\x20raymarchMaximum(origin:\x20vec3f,\x20direction:\x20vec3f,\x20interval:\x20RayInterval)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20var\x20maximumValue\x20=\x20-1e30;\x0a\x20\x20\x20\x20var\x20found\x20=\x20false;\x0a\x20\x20\x20\x20var\x20distance\x20=\x20interval.minimum;\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20<\x204096u\x20&&\x20distance\x20<=\x20interval.maximum;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20proxyPosition\x20=\x20origin\x20+\x20direction\x20*\x20distance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20skipDistance\x20=\x20select(0.0,\x20getEmptyBrickSkipDistance(proxyPosition,\x20direction),\x20scene.geographic0.x\x20<\x200.5);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(skipDistance\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20skipDistance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20volumePosition\x20=\x20proxyToVolume(proxyPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!isInsideVolume(volumePosition))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20sample\x20=\x20sampleVolumeNearest(volumePosition);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sample.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20maximumValue\x20=\x20max(maximumValue,\x20sample.value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20found\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(!found)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec4f(0.0);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20color\x20=\x20sampleColor(maximumValue);\x0a\x20\x20\x20\x20let\x20alpha\x20=\x20sampleOpacity(maximumValue)\x20*\x20scene.render.y\x20*\x20scene.transfer.z;\x0a\x20\x20\x20\x20return\x20vec4f(color.rgb\x20*\x20alpha,\x20alpha);\x0a}\x0a\x0a@vertex\x0afn\x20vertexMain(@builtin(vertex_index)\x20vertexIndex:\x20u32)\x20->\x20@builtin(position)\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20x\x20=\x20f32(i32(vertexIndex\x20&\x201u)\x20*\x204\x20-\x201);\x0a\x20\x20\x20\x20let\x20y\x20=\x20f32(i32(vertexIndex\x20>>\x201u)\x20*\x204\x20-\x201);\x0a\x20\x20\x20\x20return\x20vec4f(x,\x20y,\x200.0,\x201.0);\x0a}\x0a\x0a@fragment\x0afn\x20fragmentMain(@builtin(position)\x20fragmentPosition:\x20vec4f)\x20->\x20@location(0)\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20ndcXY\x20=\x20vec2f(fragmentPosition.x\x20/\x20scene.viewport.x\x20*\x202.0\x20-\x201.0,\x201.0\x20-\x20fragmentPosition.y\x20/\x20scene.viewport.y\x20*\x202.0);\x0a\x20\x20\x20\x20let\x20nearWorld\x20=\x20reconstructWorldPosition(vec3f(ndcXY,\x200.0));\x0a\x20\x20\x20\x20let\x20farWorld\x20=\x20reconstructWorldPosition(vec3f(ndcXY,\x201.0));\x0a\x20\x20\x20\x20let\x20nearModel\x20=\x20transformPoint(scene.inverseModelMatrix,\x20nearWorld);\x0a\x20\x20\x20\x20let\x20farModel\x20=\x20transformPoint(scene.inverseModelMatrix,\x20farWorld);\x0a\x20\x20\x20\x20let\x20direction\x20=\x20normalize(farModel\x20-\x20nearModel);\x0a\x20\x20\x20\x20var\x20interval\x20=\x20intersectClipBox(nearModel,\x20direction);\x0a\x0a\x20\x20\x20\x20if\x20(!interval.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20interval.maximum\x20=\x20min(interval.maximum,\x20getDepthDistance(vec2i(fragmentPosition.xy),\x20ndcXY,\x20nearModel,\x20direction));\x0a\x0a\x20\x20\x20\x20if\x20(interval.maximum\x20<\x20interval.minimum)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(scene.render.x\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20raymarchMaximum(nearModel,\x20direction,\x20interval);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20raymarchComposite(nearModel,\x20direction,\x20interval);\x0a}\x0a',_0x4fab04=_0x3a9ea2(0x44f),_0x3f7251=_0x3a9ea2(0x2c0);let _0x940f9b=_0x1a8427=>{const _0x1dc804=_0x3a9ea2;if([_0x1a8427['xAxis']['count'],_0x1a8427['yAxis'][_0x1dc804(0x25f)],_0x1a8427[_0x1dc804(0x46c)][_0x1dc804(0x25f)],_0x1a8427[_0x1dc804(0x357)],_0x1a8427[_0x1dc804(0x306)],_0x1a8427[_0x1dc804(0x430)]][_0x1dc804(0x3fd)](_0xceff5e=>!Number['isInteger'](_0xceff5e)||_0xceff5e<=0x0))throw Error(_0x1dc804(0x30c));if(_0x1a8427['halo']!==0x1)throw Error(_0x1dc804(0x258));},_0x46e4ef=_0x32fa6c=>[Math[_0x3a9ea2(0x37e)](_0x32fa6c['xAxis'][_0x3a9ea2(0x25f)]/_0x32fa6c[_0x3a9ea2(0x357)]),Math[_0x3a9ea2(0x37e)](_0x32fa6c[_0x3a9ea2(0x42c)]['count']/_0x32fa6c[_0x3a9ea2(0x306)]),Math['ceil'](_0x32fa6c[_0x3a9ea2(0x46c)][_0x3a9ea2(0x25f)]/_0x32fa6c['brickDepth'])],_0x5e5090=(_0x2925f9,_0x526ee8)=>{const _0x3b3a13=_0x3a9ea2;let _0x5d400d=_0x526ee8[0x0]*_0x526ee8[0x1],_0x593e97=Math[_0x3b3a13(0x248)](_0x2925f9/_0x5d400d),_0x5dba2c=_0x2925f9-_0x593e97*_0x5d400d,_0x38c735=Math[_0x3b3a13(0x248)](_0x5dba2c/_0x526ee8[0x0]);return[_0x5dba2c-_0x38c735*_0x526ee8[0x0],_0x38c735,_0x593e97];},_0x3f93ae=(_0x232468,_0x1f7f1c,_0x1c11a7)=>{const _0x47dadb=_0x3a9ea2;let _0x3e94b2=_0x1f7f1c[_0x47dadb(0x357)]+0x2,_0x3068ff=_0x1f7f1c[_0x47dadb(0x306)]+0x2,_0x34a8b7=_0x5e5090(_0x232468[_0x47dadb(0x1e5)],_0x1c11a7),_0x33b30b=Math['min'](_0x1f7f1c[_0x47dadb(0x357)],_0x1f7f1c[_0x47dadb(0x1f2)]['count']-_0x34a8b7[0x0]*_0x1f7f1c['brickWidth']),_0x17a874=Math['min'](_0x1f7f1c[_0x47dadb(0x306)],_0x1f7f1c['yAxis']['count']-_0x34a8b7[0x1]*_0x1f7f1c[_0x47dadb(0x306)]),_0x57a20f=Math[_0x47dadb(0x3e9)](_0x1f7f1c[_0x47dadb(0x430)],_0x1f7f1c['zAxis'][_0x47dadb(0x25f)]-_0x34a8b7[0x2]*_0x1f7f1c[_0x47dadb(0x430)]);for(let _0x4dce72=0x0;_0x4dce72<_0x57a20f;_0x4dce72+=0x1)for(let _0x4b2e58=0x0;_0x4b2e58<_0x17a874;_0x4b2e58+=0x1){let _0xe56dc5=((_0x4dce72+0x1)*_0x3068ff+_0x4b2e58+0x1)*_0x3e94b2+0x1;for(let _0xafe17d=0x0;_0xafe17d<_0x33b30b;_0xafe17d+=0x1){let _0x32f782=_0x232468[_0x47dadb(0x1a1)][_0xe56dc5+_0xafe17d];if(_0x32f782===_0x32f782&&(_0x1f7f1c['noData']===void 0x0||_0x32f782!==_0x1f7f1c['noData']))return{'occupied':!0x0,'coreSampleCount':_0x33b30b*_0x17a874*_0x57a20f};}}return{'occupied':!0x1,'coreSampleCount':_0x33b30b*_0x17a874*_0x57a20f};},_0x1071f6=(_0x554c27,_0x4427bb,_0x462380,_0x3036ff,_0x55f3ae)=>{const _0x9715a4=_0x3a9ea2;if(_0x554c27<=0x0)return null;let _0x44b95b=Math['floor'](_0x55f3ae/_0x4427bb),_0x3aed64=Math[_0x9715a4(0x248)](_0x55f3ae/_0x462380),_0x55b45a=Math[_0x9715a4(0x248)](_0x55f3ae/_0x3036ff),_0x273901=null;for(let _0x558f77=0x1;_0x558f77<=_0x44b95b;_0x558f77+=0x1)for(let _0x38ebde=0x1;_0x38ebde<=_0x3aed64;_0x38ebde+=0x1){let _0x8d56da=Math[_0x9715a4(0x3e9)](_0x55b45a,Math[_0x9715a4(0x248)](_0x554c27/(_0x558f77*_0x38ebde))),_0x15b420=_0x558f77*_0x38ebde*_0x8d56da;_0x8d56da<=0x0||_0x15b420<=(_0x273901?.[_0x9715a4(0x2b6)]??0x0)||(_0x273901={'slotCountX':_0x558f77,'slotCountY':_0x38ebde,'slotCountZ':_0x8d56da,'slotCount':_0x15b420,'textureCount':0x1,'capacity':_0x15b420});}return _0x273901;},_0x41e716=(_0x15a8a4,_0x5a5657)=>{const _0x5d0e3e=_0x3a9ea2;let _0x2cb51a=_0x5a5657[_0x5d0e3e(0x257)]*_0x5a5657['slotCountY'],_0x47900f=Math[_0x5d0e3e(0x248)](_0x15a8a4/_0x2cb51a),_0xb8f27=_0x15a8a4-_0x47900f*_0x2cb51a,_0x616af1=Math[_0x5d0e3e(0x248)](_0xb8f27/_0x5a5657[_0x5d0e3e(0x257)]);return[_0xb8f27-_0x616af1*_0x5a5657['slotCountX'],_0x616af1,_0x47900f];},_0x38ceec=(_0x204588,_0x4b0cbd)=>{const _0x1332a3=_0x3a9ea2;let _0xaf5a21=null;for(let _0x456749 of _0x204588)_0x456749[_0x1332a3(0x22f)]!==_0x4b0cbd&&(!_0xaf5a21||_0x456749[_0x1332a3(0x22f)]<_0xaf5a21[_0x1332a3(0x22f)])&&(_0xaf5a21=_0x456749);return _0xaf5a21;},_0x24fcd0=(_0x6f421a,_0x11b99c,_0x68d0ed,_0x1a9a29)=>{const _0x25136f=_0x3a9ea2;let _0x4df73a=_0x11b99c*Float32Array['BYTES_PER_ELEMENT'],_0x46ee7e=Math['ceil'](_0x4df73a/0x100)*0x100;if(_0x4df73a===_0x46ee7e)return{'values':_0x6f421a,'bytesPerRow':_0x46ee7e};let _0x4d71fd=_0x46ee7e/Float32Array[_0x25136f(0x202)],_0x24c741=new Float32Array(_0x4d71fd*_0x68d0ed*_0x1a9a29);for(let _0x4342f8=0x0;_0x4342f8<_0x1a9a29;_0x4342f8+=0x1)for(let _0x51068c=0x0;_0x51068c<_0x68d0ed;_0x51068c+=0x1){let _0x147390=(_0x4342f8*_0x68d0ed+_0x51068c)*_0x11b99c,_0x4cfd44=(_0x4342f8*_0x68d0ed+_0x51068c)*_0x4d71fd;_0x24c741[_0x25136f(0x46d)](_0x6f421a[_0x25136f(0x2ef)](_0x147390,_0x147390+_0x11b99c),_0x4cfd44);}return{'values':_0x24c741,'bytesPerRow':_0x46ee7e};};var _0x43815a=class{[_0x3a9ea2(0x3fc)];[_0x3a9ea2(0x292)];[_0x3a9ea2(0x234)];[_0x3a9ea2(0x474)]=null;[_0x3a9ea2(0x44b)]=null;['atlasTextures']=[];['atlasViews']=[];[_0x3a9ea2(0x1a5)]=null;['pageTableValues']=new Uint32Array();[_0x3a9ea2(0x3a9)]=new Map();[_0x3a9ea2(0x17f)]=new Map();[_0x3a9ea2(0x352)]=0x0;constructor(_0x36a41c,_0x32ee40=0x20000000,_0x1a943a=_0x32ee40){const _0x3e62e3=_0x3a9ea2;if(!Number[_0x3e62e3(0x2ba)](_0x32ee40)||!Number[_0x3e62e3(0x2ba)](_0x1a943a)||_0x32ee40<=0x0||_0x1a943a<=0x0)throw Error(_0x3e62e3(0x38f));this[_0x3e62e3(0x3fc)]=_0x36a41c,this[_0x3e62e3(0x292)]=Math[_0x3e62e3(0x3e9)](_0x32ee40,_0x1a943a),this[_0x3e62e3(0x234)]=_0x1a943a;}get[_0x3a9ea2(0x180)](){const _0x409d39=_0x3a9ea2;if(!this[_0x409d39(0x474)])throw Error(_0x409d39(0x3b7));return this[_0x409d39(0x474)];}get[_0x3a9ea2(0x293)](){const _0x1c12ff=_0x3a9ea2;if(!this['layout'])throw Error(_0x1c12ff(0x335));return this[_0x1c12ff(0x44b)];}get[_0x3a9ea2(0x370)](){const _0x139bf4=_0x3a9ea2;return this[_0x139bf4(0x3a9)][_0x139bf4(0x439)];}get[_0x3a9ea2(0x2a4)](){const _0x3c7194=_0x3a9ea2;if(!this['metadata']||!this[_0x3c7194(0x44b)])return{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this[_0x3c7194(0x234)],'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0};let _0x72a3be=_0x46e4ef(this['metadata']),_0x2caf52=_0x72a3be[0x0]*_0x72a3be[0x1]*_0x72a3be[0x2],_0x2b226c=this[_0x3c7194(0x474)][_0x3c7194(0x357)]+0x2,_0x439f1f=this[_0x3c7194(0x474)][_0x3c7194(0x306)]+0x2,_0x2aabd5=this[_0x3c7194(0x474)][_0x3c7194(0x430)]+0x2,_0x26940a=_0x2b226c*_0x439f1f*_0x2aabd5*this[_0x3c7194(0x44b)][_0x3c7194(0x3f8)]*Float32Array['BYTES_PER_ELEMENT'],_0x4bdab3=_0x2caf52*0x4*Uint32Array['BYTES_PER_ELEMENT'],_0x411dd6=0x0,_0x10d5ce=0x0;for(let _0x3b52be of this['residentByLogicalIndex'][_0x3c7194(0x1a1)]())_0x3b52be[_0x3c7194(0x3eb)]||(_0x10d5ce+=0x1,_0x411dd6+=_0x3b52be[_0x3c7194(0x27c)]);return{'logicalBrickCount':_0x2caf52,'atlasCapacity':this[_0x3c7194(0x44b)][_0x3c7194(0x3f8)],'gpuBytes':_0x26940a+_0x4bdab3,'memoryLimitBytes':this[_0x3c7194(0x234)],'budgetLimited':this[_0x3c7194(0x44b)][_0x3c7194(0x3f8)]<_0x2caf52,'skippedSamples':_0x411dd6,'skippedCells':_0x10d5ce};}[_0x3a9ea2(0x1d5)](_0x502327){const _0x4ad5f5=_0x3a9ea2;_0x940f9b(_0x502327);let _0x181a37=_0x502327[_0x4ad5f5(0x357)]+0x2,_0x2af982=_0x502327[_0x4ad5f5(0x306)]+0x2,_0x2a7e90=_0x502327[_0x4ad5f5(0x430)]+0x2,_0x430487=_0x46e4ef(_0x502327),_0x3cb4fc=_0x430487[0x0]*_0x430487[0x1]*_0x430487[0x2],_0xbe1762=_0x3cb4fc*0x4*Uint32Array['BYTES_PER_ELEMENT'],_0x31ff57=Math[_0x4ad5f5(0x3e9)](this[_0x4ad5f5(0x292)],this['memoryHardLimitBytes'])-_0xbe1762;if(_0x31ff57<=0x0)throw Error('WebGPU\x20volume\x20page\x20table\x20exceeds\x20the\x20configured\x20memory\x20limit.\x20WebGPU\x20体积页表超过显存限制。');let _0x1bec2c=_0x181a37*_0x2af982*_0x2a7e90*Float32Array[_0x4ad5f5(0x202)],_0xb73ec2=Math[_0x4ad5f5(0x3e9)](_0x3cb4fc,Math[_0x4ad5f5(0x248)](_0x31ff57/_0x1bec2c)),_0x208467=Math['max'](0x1,Math[_0x4ad5f5(0x248)](0x4000000/_0x1bec2c)),_0x50455f=Math[_0x4ad5f5(0x3e9)](0x8,Math['max'](0x1,Math[_0x4ad5f5(0x37e)](_0xb73ec2/_0x208467))),_0x21e714=_0x1071f6(Math[_0x4ad5f5(0x1ac)](0x1,Math['floor'](_0xb73ec2/_0x50455f)),_0x181a37,_0x2af982,_0x2a7e90,this['device'][_0x4ad5f5(0x373)]['maxTextureDimension3D']);if(!_0x21e714)throw Error('Unable\x20to\x20allocate\x20a\x20WebGPU\x20R32F\x20volume\x20atlas\x20within\x20device\x20limits.\x20无法在设备限制内分配\x20WebGPU\x20R32F\x20体积图集。');let _0x1f74ef={..._0x21e714,'textureCount':_0x50455f,'capacity':_0x21e714[_0x4ad5f5(0x2b6)]*_0x50455f},_0x3b45bc=_0x181a37*_0x1f74ef[_0x4ad5f5(0x257)],_0x1c530e=_0x2af982*_0x1f74ef['slotCountY'],_0x250f5a=_0x2a7e90*_0x1f74ef[_0x4ad5f5(0x491)],_0x34615a=Array[_0x4ad5f5(0x18d)]({'length':_0x50455f},(_0x345caa,_0x40965d)=>this['device']['createTexture']({'label':_0x4ad5f5(0x3ce)+_0x40965d,'size':[_0x3b45bc,_0x1c530e,_0x250f5a],'dimension':'3d','format':_0x4ad5f5(0x406),'usage':GPUTextureUsage['TEXTURE_BINDING']|GPUTextureUsage[_0x4ad5f5(0x1f4)]|GPUTextureUsage[_0x4ad5f5(0x432)]})),_0x49f48b=this[_0x4ad5f5(0x3fc)][_0x4ad5f5(0x242)]({'label':_0x4ad5f5(0x2ae),'size':Math['max'](0x10,_0xbe1762),'usage':GPUBufferUsage[_0x4ad5f5(0x336)]|GPUBufferUsage['COPY_DST']});this[_0x4ad5f5(0x3b8)](),this[_0x4ad5f5(0x474)]={..._0x502327},this[_0x4ad5f5(0x44b)]=_0x1f74ef,this[_0x4ad5f5(0x2d7)]=_0x34615a,this[_0x4ad5f5(0x3de)]=_0x34615a[_0x4ad5f5(0x42f)](_0xe302cb=>_0xe302cb[_0x4ad5f5(0x429)]({'dimension':'3d'})),this[_0x4ad5f5(0x1a5)]=_0x49f48b,this['pageTableValues']=new Uint32Array(_0x3cb4fc*0x4),this[_0x4ad5f5(0x3fc)][_0x4ad5f5(0x3c7)]['writeBuffer'](_0x49f48b,0x0,this[_0x4ad5f5(0x2f0)]);for(let _0x4467e3 of _0x34615a)this[_0x4ad5f5(0x2b4)](_0x4467e3,_0x3b45bc,_0x1c530e,_0x250f5a);this[_0x4ad5f5(0x352)]+=0x1;}[_0x3a9ea2(0x3d4)](_0x21d1cb,_0x1fe1f6){const _0x50fb32=_0x3a9ea2;let _0x1462b7=this[_0x50fb32(0x180)],_0x562f0a=this['atlasLayout'],_0x5d643f=_0x46e4ef(_0x1462b7),_0x124cb3=_0x5d643f[0x0]*_0x5d643f[0x1]*_0x5d643f[0x2];if(!Number[_0x50fb32(0x34f)](_0x21d1cb['logicalIndex'])||_0x21d1cb[_0x50fb32(0x1e5)]<0x0||_0x21d1cb['logicalIndex']>=_0x124cb3)throw Error('Invalid\x20logical\x20volume\x20brick\x20index:\x20'+_0x21d1cb[_0x50fb32(0x1e5)]+_0x50fb32(0x251));let _0x3d87e2=_0x1462b7[_0x50fb32(0x357)]+0x2,_0x3c0f04=_0x1462b7[_0x50fb32(0x306)]+0x2,_0x2b501c=_0x1462b7[_0x50fb32(0x430)]+0x2,_0x34489e=_0x3d87e2*_0x3c0f04*_0x2b501c;if(_0x21d1cb[_0x50fb32(0x1a1)][_0x50fb32(0x2e8)]!==_0x34489e)throw Error(_0x50fb32(0x231)+_0x21d1cb[_0x50fb32(0x1e5)]+_0x50fb32(0x2fb)+_0x34489e+_0x50fb32(0x1aa)+_0x21d1cb['values'][_0x50fb32(0x2e8)]+_0x50fb32(0x1b3));let _0x21c7ff=this[_0x50fb32(0x3a9)][_0x50fb32(0x2a8)](_0x21d1cb[_0x50fb32(0x1e5)])??this[_0x50fb32(0x199)](_0x21d1cb[_0x50fb32(0x1e5)],_0x1fe1f6),_0x37c1bf=_0x3f93ae(_0x21d1cb,_0x1462b7,_0x5d643f),_0x4971fa=Math[_0x50fb32(0x248)](_0x21c7ff[_0x50fb32(0x182)]/_0x562f0a[_0x50fb32(0x2b6)]),_0x367c21=_0x41e716(_0x21c7ff['slotIndex']%_0x562f0a[_0x50fb32(0x2b6)],_0x562f0a),_0x4d0c1b=_0x24fcd0(new Float32Array(_0x21d1cb['values']),_0x3d87e2,_0x3c0f04,_0x2b501c);return _0x21c7ff[_0x50fb32(0x22f)]=_0x1fe1f6,_0x21c7ff[_0x50fb32(0x352)]=this[_0x50fb32(0x352)],_0x21c7ff[_0x50fb32(0x3eb)]=_0x37c1bf[_0x50fb32(0x3eb)],_0x21c7ff[_0x50fb32(0x27c)]=_0x37c1bf[_0x50fb32(0x3d0)],this[_0x50fb32(0x2f3)](_0x21c7ff),{'values':_0x4d0c1b[_0x50fb32(0x1a1)],'bytesPerRow':_0x4d0c1b[_0x50fb32(0x26d)],'rowsPerImage':_0x3c0f04,'origin':{'x':_0x367c21[0x0]*_0x3d87e2,'y':_0x367c21[0x1]*_0x3c0f04,'z':_0x367c21[0x2]*_0x2b501c},'extent':[_0x3d87e2,_0x3c0f04,_0x2b501c],'atlasIndex':_0x4971fa};}[_0x3a9ea2(0x394)](_0x157749,_0x24ed6a,_0x3abf7c,_0x379f0b){const _0x4b72f6=_0x3a9ea2;_0x157749[_0x4b72f6(0x27e)]({'buffer':_0x24ed6a,'offset':_0x3abf7c,'bytesPerRow':_0x379f0b[_0x4b72f6(0x26d)],'rowsPerImage':_0x379f0b[_0x4b72f6(0x3c0)]},{'texture':this[_0x4b72f6(0x415)](_0x379f0b['atlasIndex']),'origin':_0x379f0b['origin']},_0x379f0b['extent']);}[_0x3a9ea2(0x19e)](_0x22fba8,_0x1833a8){const _0x185e88=_0x3a9ea2;for(let _0x3afb69 of _0x22fba8){let _0x5c1e92=this[_0x185e88(0x3a9)]['get'](_0x3afb69);_0x5c1e92&&(_0x5c1e92[_0x185e88(0x22f)]=_0x1833a8);}}[_0x3a9ea2(0x31e)](_0x358948,_0x1777ef){const _0x52c150=_0x3a9ea2;if(this[_0x52c150(0x3de)][_0x52c150(0x2e8)]===0x0||!this['pageTableBuffer'])throw Error('WebGPU\x20volume\x20atlas\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积图集资源不完整。');return this[_0x52c150(0x3fc)]['createBindGroup']({'label':'volume\x20atlas\x20bind\x20group','layout':_0x358948,'entries':[...Array[_0x52c150(0x18d)]({'length':0x8},(_0x530235,_0x54593f)=>({'binding':_0x54593f,'resource':this[_0x52c150(0x3de)][_0x54593f]??this[_0x52c150(0x3de)][0x0]})),{'binding':0x8,'resource':{'buffer':this[_0x52c150(0x1a5)]}},{'binding':0x9,'resource':{'buffer':_0x1777ef}}]});}[_0x3a9ea2(0x421)](){const _0x2d92e4=_0x3a9ea2;this[_0x2d92e4(0x3b8)](),this[_0x2d92e4(0x474)]=null,this['layout']=null,this[_0x2d92e4(0x2f0)]=new Uint32Array();}[_0x3a9ea2(0x199)](_0x729842,_0x11efcb){const _0xff24be=_0x3a9ea2;let _0x51983d=this['atlasLayout'],_0x558366=this[_0xff24be(0x17f)][_0xff24be(0x439)];if(_0x558366>=_0x51983d[_0xff24be(0x3f8)]){let _0x16dee7=_0x38ceec(this[_0xff24be(0x17f)][_0xff24be(0x1a1)](),_0x11efcb);if(!_0x16dee7)throw Error('WebGPU\x20volume\x20atlas\x20has\x20no\x20evictable\x20slot.\x20WebGPU\x20体积图集没有可驱逐的槽位。');_0x558366=_0x16dee7['slotIndex'],this['clearPageEntry'](_0x16dee7[_0xff24be(0x1e5)]),this[_0xff24be(0x3a9)][_0xff24be(0x255)](_0x16dee7['logicalIndex']),this['residentBySlotIndex'][_0xff24be(0x255)](_0x558366);}let _0xbaf846={'logicalIndex':_0x729842,'slotIndex':_0x558366,'lastUsedFrame':_0x11efcb,'generation':this[_0xff24be(0x352)],'occupied':!0x1,'skippedSampleCount':0x0};return this[_0xff24be(0x3a9)]['set'](_0x729842,_0xbaf846),this[_0xff24be(0x17f)]['set'](_0x558366,_0xbaf846),_0xbaf846;}['writePageEntry'](_0x436a1a){const _0x57794c=_0x3a9ea2;let _0x22fe46=_0x436a1a['logicalIndex']*0x4;this['pageTableValues'][_0x22fe46]=_0x436a1a['slotIndex']%this[_0x57794c(0x293)][_0x57794c(0x2b6)]+0x1,this[_0x57794c(0x2f0)][_0x22fe46+0x1]=_0x436a1a[_0x57794c(0x352)],this[_0x57794c(0x2f0)][_0x22fe46+0x2]=+!!_0x436a1a[_0x57794c(0x3eb)],this[_0x57794c(0x2f0)][_0x22fe46+0x3]=Math[_0x57794c(0x248)](_0x436a1a['slotIndex']/this[_0x57794c(0x293)]['slotCount']),this['device']['queue'][_0x57794c(0x311)](this[_0x57794c(0x1db)](),_0x22fe46*Uint32Array['BYTES_PER_ELEMENT'],this['pageTableValues'],_0x22fe46,0x4);}[_0x3a9ea2(0x1d0)](_0x4f06b8){const _0x25047d=_0x3a9ea2;let _0x23751=_0x4f06b8*0x4;this[_0x25047d(0x2f0)][_0x25047d(0x467)](0x0,_0x23751,_0x23751+0x4),this[_0x25047d(0x3fc)][_0x25047d(0x3c7)]['writeBuffer'](this[_0x25047d(0x1db)](),_0x23751*Uint32Array[_0x25047d(0x202)],this['pageTableValues'],_0x23751,0x4);}[_0x3a9ea2(0x415)](_0x1c4878){const _0x17fe6c=_0x3a9ea2;let _0x71e285=this[_0x17fe6c(0x2d7)][_0x1c4878];if(!_0x71e285)throw Error(_0x17fe6c(0x437));return _0x71e285;}[_0x3a9ea2(0x2b4)](_0x2cc572,_0x11354a,_0x200ccb,_0x519308){const _0x482d68=_0x3a9ea2;let _0x3a192b=this[_0x482d68(0x3fc)][_0x482d68(0x41d)]({'label':_0x482d68(0x39d),'code':_0x482d68(0x28c)}),_0x161d61=this[_0x482d68(0x3fc)][_0x482d68(0x3c9)]({'label':_0x482d68(0x3db),'layout':'auto','compute':{'module':_0x3a192b,'entryPoint':_0x482d68(0x2a6)}}),_0x52d282=this['device']['createBindGroup']({'label':'volume\x20atlas\x20clear\x20bind\x20group','layout':_0x161d61[_0x482d68(0x307)](0x0),'entries':[{'binding':0x0,'resource':_0x2cc572['createView']({'dimension':'3d'})}]}),_0x5b9eee=this['device'][_0x482d68(0x375)]({'label':'volume\x20atlas\x20clear'}),_0x3099c3=_0x5b9eee[_0x482d68(0x3fb)]({'label':_0x482d68(0x48b)});_0x3099c3[_0x482d68(0x296)](_0x161d61),_0x3099c3[_0x482d68(0x324)](0x0,_0x52d282),_0x3099c3[_0x482d68(0x228)](Math[_0x482d68(0x37e)](_0x11354a/0x4),Math['ceil'](_0x200ccb/0x4),Math[_0x482d68(0x37e)](_0x519308/0x4)),_0x3099c3['end'](),this[_0x482d68(0x3fc)]['queue'][_0x482d68(0x1e4)]([_0x5b9eee[_0x482d68(0x1fa)]()]);}['getPageTableBuffer'](){const _0x4a3e4d=_0x3a9ea2;if(!this[_0x4a3e4d(0x1a5)])throw Error(_0x4a3e4d(0x2de));return this[_0x4a3e4d(0x1a5)];}[_0x3a9ea2(0x3b8)](){const _0x2ec6f8=_0x3a9ea2;for(let _0x9acb68 of this[_0x2ec6f8(0x2d7)])_0x9acb68[_0x2ec6f8(0x421)]();this[_0x2ec6f8(0x1a5)]?.[_0x2ec6f8(0x421)](),this[_0x2ec6f8(0x2d7)]=[],this[_0x2ec6f8(0x3de)]=[],this[_0x2ec6f8(0x1a5)]=null,this[_0x2ec6f8(0x3a9)][_0x2ec6f8(0x33b)](),this[_0x2ec6f8(0x17f)]['clear']();}},_0x5b4554=class{[_0x3a9ea2(0x3fc)];[_0x3a9ea2(0x37d)]=null;[_0x3a9ea2(0x208)]=null;[_0x3a9ea2(0x1cc)]=0x0;[_0x3a9ea2(0x22a)]=0x0;constructor(_0x3303fa){const _0x5efc1b=_0x3a9ea2;this[_0x5efc1b(0x3fc)]=_0x3303fa;}get[_0x3a9ea2(0x29f)](){const _0x1388e8=_0x3a9ea2;if(!this['depthView'])throw Error('WebGPU\x20scene\x20depth\x20attachment\x20is\x20not\x20initialized.\x20WebGPU\x20场景深度附件尚未初始化。');return this[_0x1388e8(0x208)];}[_0x3a9ea2(0x3df)](_0x39fada,_0x11e9b3){const _0x566087=_0x3a9ea2;if(this['width']===_0x39fada&&this[_0x566087(0x22a)]===_0x11e9b3)return;let _0x2a0cc0=this[_0x566087(0x3fc)]['createTexture']({'label':_0x566087(0x3c1),'size':[_0x39fada,_0x11e9b3],'format':'depth32float','usage':GPUTextureUsage[_0x566087(0x369)]|GPUTextureUsage['TEXTURE_BINDING']}),_0x24f948=this[_0x566087(0x37d)];this[_0x566087(0x37d)]=_0x2a0cc0,this[_0x566087(0x208)]=_0x2a0cc0['createView'](),this[_0x566087(0x1cc)]=_0x39fada,this['height']=_0x11e9b3,_0x24f948?.[_0x566087(0x421)]();}[_0x3a9ea2(0x421)](){const _0x2ca989=_0x3a9ea2;this[_0x2ca989(0x37d)]?.[_0x2ca989(0x421)](),this['depthTexture']=null,this[_0x2ca989(0x208)]=null,this[_0x2ca989(0x1cc)]=0x0,this[_0x2ca989(0x22a)]=0x0;}},_0x7a802e=class{[_0x3a9ea2(0x3fc)];['resources']=[];constructor(_0x5c811a){const _0x2683a9=_0x3a9ea2;this[_0x2683a9(0x3fc)]=_0x5c811a;}get['count'](){const _0x56dc91=_0x3a9ea2;return this[_0x56dc91(0x329)][_0x56dc91(0x2e8)];}['replace'](_0x510c1c){const _0x424902=_0x3a9ea2;let _0x3f2d5c=[];try{for(let _0x3a7896 of _0x510c1c)_0x3f2d5c[_0x424902(0x23d)](this[_0x424902(0x2fe)](_0x3a7896));}catch(_0x4492c9){for(let _0x104b2b of _0x3f2d5c)_0x104b2b['buffer']['destroy']();throw _0x4492c9;}this[_0x424902(0x3b8)](),this[_0x424902(0x329)]=_0x3f2d5c;}[_0x3a9ea2(0x308)](_0x469f79,_0x4a0373,_0x157f58){const _0x593233=_0x3a9ea2;for(let _0x31430e of this[_0x593233(0x329)])_0x31430e[_0x593233(0x3a5)]!==_0x4a0373||_0x31430e[_0x593233(0x462)]!==_0x157f58||(_0x469f79[_0x593233(0x485)](0x0,_0x31430e[_0x593233(0x47e)]),_0x469f79[_0x593233(0x308)](_0x31430e['vertexCount']));}[_0x3a9ea2(0x421)](){this['destroyResources']();}[_0x3a9ea2(0x2fe)](_0x268824){const _0x5b93c6=_0x3a9ea2;if(_0x268824[_0x5b93c6(0x37a)]['length']===0x0||_0x268824[_0x5b93c6(0x37a)][_0x5b93c6(0x2e8)]%0x7!=0x0)throw Error(_0x5b93c6(0x2e6)+_0x268824['id']+_0x5b93c6(0x3c5));let _0x42cb02=new Float32Array(_0x268824[_0x5b93c6(0x37a)]),_0x4e1d94=this[_0x5b93c6(0x3fc)][_0x5b93c6(0x242)]({'label':_0x5b93c6(0x364)+_0x268824['id'],'size':_0x42cb02[_0x5b93c6(0x2a7)],'usage':GPUBufferUsage['VERTEX']|GPUBufferUsage[_0x5b93c6(0x1f4)]});return this[_0x5b93c6(0x3fc)]['queue'][_0x5b93c6(0x311)](_0x4e1d94,0x0,_0x42cb02),{'id':_0x268824['id'],'topology':_0x268824[_0x5b93c6(0x3a5)],'depthMode':_0x268824[_0x5b93c6(0x462)],'buffer':_0x4e1d94,'vertexCount':_0x268824['vertices'][_0x5b93c6(0x2e8)]/0x7};}[_0x3a9ea2(0x3b8)](){const _0x3b64a3=_0x3a9ea2;for(let _0xc1dfb4 of this[_0x3b64a3(0x329)])_0xc1dfb4[_0x3b64a3(0x47e)][_0x3b64a3(0x421)]();this[_0x3b64a3(0x329)]=[];}},_0x1d4dd8=class{[_0x3a9ea2(0x3fc)];[_0x3a9ea2(0x44b)];[_0x3a9ea2(0x329)]=[];[_0x3a9ea2(0x461)]=0x0;[_0x3a9ea2(0x3ad)]=0x0;constructor(_0x3e32b7,_0x3732ff){const _0x552594=_0x3a9ea2;this[_0x552594(0x3fc)]=_0x3e32b7,this['layout']=_0x3732ff;}get['count'](){const _0x4aadc1=_0x3a9ea2;return this['resources'][_0x4aadc1(0x2e8)];}get[_0x3a9ea2(0x2a4)](){const _0x357cfe=_0x3a9ea2;return{'uniformUpdateCount':this[_0x357cfe(0x461)],'resourceRebuildCount':this[_0x357cfe(0x3ad)]};}['replace'](_0x1dfed5){const _0x207bd6=_0x3a9ea2;let _0x45ae48=new Map(this[_0x207bd6(0x329)][_0x207bd6(0x42f)](_0x4f47d0=>[_0x4f47d0['id'],_0x4f47d0])),_0x312520=[],_0x307225=new Set();try{for(let _0x192ba3 of _0x1dfed5){if(!_0x192ba3[_0x207bd6(0x1eb)])continue;if(_0x307225[_0x207bd6(0x3cf)](_0x192ba3['id']))throw Error('Volume\x20slice\x20ID\x20'+_0x192ba3['id']+'\x20is\x20duplicated.\x20体积切面\x20ID\x20重复。');_0x307225[_0x207bd6(0x451)](_0x192ba3['id']);let _0x29594f=this[_0x207bd6(0x359)](_0x192ba3),_0x244dfe=_0x45ae48[_0x207bd6(0x2a8)](_0x192ba3['id']);if(!_0x244dfe){_0x312520[_0x207bd6(0x23d)](this['createResource'](_0x192ba3,_0x29594f));continue;}_0x45ae48[_0x207bd6(0x255)](_0x192ba3['id']),_0x244dfe[_0x207bd6(0x462)]=_0x192ba3[_0x207bd6(0x462)],this[_0x207bd6(0x446)](_0x244dfe[_0x207bd6(0x1a1)],_0x29594f)||(this[_0x207bd6(0x3fc)][_0x207bd6(0x3c7)][_0x207bd6(0x311)](_0x244dfe[_0x207bd6(0x47e)],0x0,_0x29594f),_0x244dfe['values']=_0x29594f,this[_0x207bd6(0x461)]+=0x1),_0x312520[_0x207bd6(0x23d)](_0x244dfe);}}catch(_0x4adbff){for(let _0x31a1e6 of _0x312520)this[_0x207bd6(0x329)][_0x207bd6(0x388)](_0x31a1e6)||_0x31a1e6['buffer']['destroy']();throw _0x4adbff;}for(let _0x59d856 of _0x45ae48[_0x207bd6(0x1a1)]())_0x59d856[_0x207bd6(0x47e)][_0x207bd6(0x421)]();this[_0x207bd6(0x329)]=_0x312520;}[_0x3a9ea2(0x308)](_0x1e9b8f,_0x246e1c,_0x442a4c){const _0x266bf2=_0x3a9ea2;_0x1e9b8f[_0x266bf2(0x296)](_0x246e1c);for(let _0x784c85 of this['resources'])_0x784c85[_0x266bf2(0x462)]===_0x442a4c&&(_0x1e9b8f[_0x266bf2(0x324)](0x3,_0x784c85[_0x266bf2(0x42e)]),_0x1e9b8f[_0x266bf2(0x308)](0x1800));}['destroy'](){this['destroyResources']();}[_0x3a9ea2(0x359)](_0x455c9){const _0x5c9b83=_0x3a9ea2;if(!Number[_0x5c9b83(0x2ba)](_0x455c9['position'])||_0x455c9[_0x5c9b83(0x1d2)]<0x0||_0x455c9[_0x5c9b83(0x1d2)]>0x1)throw Error(_0x5c9b83(0x349)+_0x455c9['id']+_0x5c9b83(0x39e));let _0x59e523=_0x455c9[_0x5c9b83(0x35f)]==='x'?0x0:_0x455c9[_0x5c9b83(0x35f)]==='y'?0x1:0x2,_0x58a2d2=_0x455c9[_0x5c9b83(0x454)]??[0x0,0x0,0x0,0x0];if(_0x58a2d2[_0x5c9b83(0x3fd)](_0x63157e=>!Number[_0x5c9b83(0x2ba)](_0x63157e)||_0x63157e<0x0||_0x63157e>0x1))throw Error(_0x5c9b83(0x349)+_0x455c9['id']+'\x20plate\x20color\x20must\x20use\x20values\x20from\x20zero\x20through\x20one.\x20体积切面底板颜色必须位于零至一。');return new Float32Array([_0x59e523,_0x455c9[_0x5c9b83(0x1d2)],_0x455c9[_0x5c9b83(0x23e)]??0x1,0x0,..._0x58a2d2]);}['createResource'](_0xc1857a,_0x18bb13){const _0x3c6c63=_0x3a9ea2;let _0x549e4e=this[_0x3c6c63(0x3fc)][_0x3c6c63(0x242)]({'label':_0x3c6c63(0x392)+_0xc1857a['id'],'size':0x20,'usage':GPUBufferUsage[_0x3c6c63(0x215)]|GPUBufferUsage[_0x3c6c63(0x1f4)]});this[_0x3c6c63(0x3fc)][_0x3c6c63(0x3c7)][_0x3c6c63(0x311)](_0x549e4e,0x0,_0x18bb13);let _0x5d86cb=this[_0x3c6c63(0x3fc)][_0x3c6c63(0x31e)]({'layout':this[_0x3c6c63(0x44b)],'entries':[{'binding':0x0,'resource':{'buffer':_0x549e4e}}]});return this[_0x3c6c63(0x3ad)]+=0x1,{'id':_0xc1857a['id'],'depthMode':_0xc1857a[_0x3c6c63(0x462)],'buffer':_0x549e4e,'bindGroup':_0x5d86cb,'values':_0x18bb13};}[_0x3a9ea2(0x446)](_0x5600b2,_0x4f0fc0){const _0x51bcaa=_0x3a9ea2;for(let _0x158c93=0x0;_0x158c93<_0x5600b2[_0x51bcaa(0x2e8)];_0x158c93+=0x1)if(_0x5600b2[_0x158c93]!==_0x4f0fc0[_0x158c93])return!0x1;return!0x0;}[_0x3a9ea2(0x3b8)](){const _0x5b90e1=_0x3a9ea2;for(let _0x57d86e of this[_0x5b90e1(0x329)])_0x57d86e[_0x5b90e1(0x47e)]['destroy']();this['resources']=[];}};let _0x54e300=(_0x4e8d3f,_0x56a429,_0x5b3eb0)=>{const _0x5e20c1=_0x3a9ea2;let _0x86405c=_0x4e8d3f[_0x5e20c1(0x242)]({'label':_0x5b3eb0,'size':Math[_0x5e20c1(0x1ac)](0x4,_0x56a429[_0x5e20c1(0x2a7)]),'usage':GPUBufferUsage[_0x5e20c1(0x336)]|GPUBufferUsage[_0x5e20c1(0x1f4)]});return _0x56a429[_0x5e20c1(0x2a7)]>0x0&&_0x4e8d3f[_0x5e20c1(0x3c7)][_0x5e20c1(0x311)](_0x86405c,0x0,_0x56a429),_0x86405c;},_0x2f2a05=(_0x5ab7a0,_0x29e811)=>{const _0x1e8893=_0x3a9ea2;if(_0x5ab7a0[_0x1e8893(0x2e8)]===0x0||_0x29e811[_0x1e8893(0x2e8)]===0x0)throw Error('Volume\x20color\x20and\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积颜色和透明度色标不能为空。');for(let _0x29c8b9=0x1;_0x29c8b9<_0x5ab7a0[_0x1e8893(0x2e8)];_0x29c8b9+=0x1)if(_0x5ab7a0[_0x29c8b9][_0x1e8893(0x431)]<_0x5ab7a0[_0x29c8b9-0x1][_0x1e8893(0x431)])throw Error(_0x1e8893(0x428));for(let _0x3e32d9=0x0;_0x3e32d9<_0x29e811[_0x1e8893(0x2e8)];_0x3e32d9+=0x1){if(_0x29e811[_0x3e32d9]['opacity']<0x0||_0x29e811[_0x3e32d9][_0x1e8893(0x23e)]>0x1)throw Error(_0x1e8893(0x2c3));if(_0x3e32d9>0x0&&_0x29e811[_0x3e32d9]['value']<_0x29e811[_0x3e32d9-0x1][_0x1e8893(0x431)])throw Error(_0x1e8893(0x45e));}};var _0x49e786=class{['device'];[_0x3a9ea2(0x31d)]=null;[_0x3a9ea2(0x3dd)]=null;[_0x3a9ea2(0x325)]=null;[_0x3a9ea2(0x374)]=null;['colorStopCount']=0x0;['opacityStopCount']=0x0;constructor(_0x28130b){const _0x5e18b0=_0x3a9ea2;this[_0x5e18b0(0x3fc)]=_0x28130b;}get[_0x3a9ea2(0x46f)](){const _0xf1b45b=_0x3a9ea2;return[this[_0xf1b45b(0x34d)],this[_0xf1b45b(0x418)]];}[_0x3a9ea2(0x3a6)](_0x13f47b,_0x3c232e){const _0x5b0cec=_0x3a9ea2;_0x2f2a05(_0x13f47b,_0x3c232e);let _0x31c72a=new Float32Array(_0x13f47b[_0x5b0cec(0x2e8)]),_0x21f99c=new Float32Array(_0x13f47b[_0x5b0cec(0x2e8)]*0x4),_0x25fd39=new Float32Array(_0x3c232e['length']),_0x24b6dc=new Float32Array(_0x3c232e[_0x5b0cec(0x2e8)]);for(let _0x443c41=0x0;_0x443c41<_0x13f47b['length'];_0x443c41+=0x1)_0x31c72a[_0x443c41]=_0x13f47b[_0x443c41][_0x5b0cec(0x431)],_0x21f99c[_0x5b0cec(0x46d)](_0x13f47b[_0x443c41]['color'],_0x443c41*0x4);for(let _0x529f1e=0x0;_0x529f1e<_0x3c232e[_0x5b0cec(0x2e8)];_0x529f1e+=0x1)_0x25fd39[_0x529f1e]=_0x3c232e[_0x529f1e][_0x5b0cec(0x431)],_0x24b6dc[_0x529f1e]=_0x3c232e[_0x529f1e]['opacity'];let _0x1af136=[_0x54e300(this['device'],_0x31c72a,'volume\x20color\x20stop\x20values'),_0x54e300(this[_0x5b0cec(0x3fc)],_0x21f99c,'volume\x20color\x20stop\x20colors'),_0x54e300(this[_0x5b0cec(0x3fc)],_0x25fd39,'volume\x20opacity\x20stop\x20values'),_0x54e300(this[_0x5b0cec(0x3fc)],_0x24b6dc,_0x5b0cec(0x472))];this[_0x5b0cec(0x31b)](),this['colorValuesBuffer']=_0x1af136[0x0],this[_0x5b0cec(0x3dd)]=_0x1af136[0x1],this['opacityValuesBuffer']=_0x1af136[0x2],this[_0x5b0cec(0x374)]=_0x1af136[0x3],this[_0x5b0cec(0x34d)]=_0x13f47b[_0x5b0cec(0x2e8)],this[_0x5b0cec(0x418)]=_0x3c232e['length'];}[_0x3a9ea2(0x31e)](_0x4d6f74){const _0x48bbd6=_0x3a9ea2;if(!this[_0x48bbd6(0x31d)]||!this[_0x48bbd6(0x3dd)]||!this[_0x48bbd6(0x325)]||!this['opacityBuffer'])throw Error(_0x48bbd6(0x327));return this[_0x48bbd6(0x3fc)][_0x48bbd6(0x31e)]({'label':'volume\x20transfer\x20bind\x20group','layout':_0x4d6f74,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x48bbd6(0x31d)]}},{'binding':0x1,'resource':{'buffer':this[_0x48bbd6(0x3dd)]}},{'binding':0x2,'resource':{'buffer':this[_0x48bbd6(0x325)]}},{'binding':0x3,'resource':{'buffer':this[_0x48bbd6(0x374)]}}]});}[_0x3a9ea2(0x421)](){const _0x1d6ead=_0x3a9ea2;this[_0x1d6ead(0x31b)](),this[_0x1d6ead(0x34d)]=0x0,this['opacityStopCount']=0x0;}[_0x3a9ea2(0x31b)](){const _0x7a3fb2=_0x3a9ea2;this[_0x7a3fb2(0x31d)]?.[_0x7a3fb2(0x421)](),this[_0x7a3fb2(0x3dd)]?.[_0x7a3fb2(0x421)](),this[_0x7a3fb2(0x325)]?.[_0x7a3fb2(0x421)](),this[_0x7a3fb2(0x374)]?.[_0x7a3fb2(0x421)](),this[_0x7a3fb2(0x31d)]=null,this[_0x7a3fb2(0x3dd)]=null,this[_0x7a3fb2(0x325)]=null,this[_0x7a3fb2(0x374)]=null;}};let _0x217e01=0x200*0x400*0x400,_0x39bd65=[0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1],_0x4e600e=[{'value':0x0,'color':[0x0,0x0,0x1,0x1]},{'value':0x1,'color':[0x1,0x0,0x0,0x1]}],_0x24bae3=[{'value':0x0,'opacity':0x0},{'value':0x1,'opacity':0x1}],_0x1c2b5e=()=>({'color':{'srcFactor':'one','dstFactor':_0x3a9ea2(0x1c2),'operation':'add'},'alpha':{'srcFactor':_0x3a9ea2(0x353),'dstFactor':_0x3a9ea2(0x1c2),'operation':'add'}}),_0x3b3848=(_0x2fd23d,_0x513bf8)=>{const _0x40f23f=_0x3a9ea2;if(_0x2fd23d[_0x40f23f(0x2e8)]!==0x10||_0x2fd23d[_0x40f23f(0x3fd)](_0x2e258a=>!Number[_0x40f23f(0x2ba)](_0x2e258a)))throw Error(_0x513bf8+'\x20must\x20contain\x20sixteen\x20finite\x20values.\x20'+_0x513bf8+'\x20必须包含十六个有限数值。');},_0x4f0969=(_0x2e4f04,_0x4d3773)=>{const _0xc3cba6=_0x3a9ea2;if(!Number[_0xc3cba6(0x2ba)](_0x2e4f04)||_0x2e4f04<0x0)throw Error(_0x4d3773+_0xc3cba6(0x2df)+_0x4d3773+_0xc3cba6(0x414));return _0x2e4f04;},_0x51dc63=(_0x2e437b,_0x2ba60a)=>{const _0x113428=_0x3a9ea2;if(!Number['isFinite'](_0x2e437b)||_0x2e437b<=0x0)throw Error(_0x2ba60a+_0x113428(0x479)+_0x2ba60a+_0x113428(0x27b));return _0x2e437b;},_0x41f657=_0x41e3d8=>_0x41e3d8['map'](_0x45345e=>({..._0x45345e,'vertices':new Float32Array(_0x45345e[_0x3a9ea2(0x37a)])})),_0x1d5ecd=_0x46428f=>{const _0x1f1005=_0x3a9ea2;let _0x53fdbc=_0x46428f[_0x1f1005(0x357)]+_0x46428f[_0x1f1005(0x3ca)]*0x2,_0x3cc58c=_0x46428f[_0x1f1005(0x306)]+_0x46428f[_0x1f1005(0x3ca)]*0x2,_0x5ae4ca=_0x46428f[_0x1f1005(0x430)]+_0x46428f[_0x1f1005(0x3ca)]*0x2;return Math[_0x1f1005(0x37e)](_0x53fdbc*Float32Array['BYTES_PER_ELEMENT']/0x100)*0x100*_0x3cc58c*_0x5ae4ca+0x10;};var _0x430b40=class{[_0x3a9ea2(0x18c)];['lifecycleState']='idle';[_0x3a9ea2(0x29d)]=null;[_0x3a9ea2(0x2d5)]=null;[_0x3a9ea2(0x3fc)]=null;[_0x3a9ea2(0x2b7)]=null;['format']=null;[_0x3a9ea2(0x235)]=null;[_0x3a9ea2(0x225)]=null;['geometryBindGroupLayout']=null;[_0x3a9ea2(0x207)]=null;['volumeBindGroupLayout']=null;[_0x3a9ea2(0x37c)]=null;['sliceBindGroupLayout']=null;[_0x3a9ea2(0x3b6)]=null;[_0x3a9ea2(0x3ab)]=null;[_0x3a9ea2(0x313)]=null;[_0x3a9ea2(0x36e)]=null;[_0x3a9ea2(0x188)]=null;[_0x3a9ea2(0x32b)]=null;['sceneLinePipeline']=null;[_0x3a9ea2(0x3e4)]=null;['overlayLinePipeline']=null;[_0x3a9ea2(0x19d)]=null;['overlaySlicePipeline']=null;[_0x3a9ea2(0x223)]=null;[_0x3a9ea2(0x3f0)]=null;[_0x3a9ea2(0x25a)]=null;[_0x3a9ea2(0x1ce)]=null;[_0x3a9ea2(0x39b)]=null;['axisResources']=null;[_0x3a9ea2(0x474)]=null;[_0x3a9ea2(0x34b)]={'viewProjection':_0x39bd65,'inverseViewProjection':_0x39bd65,'cameraPosition':[0x0,0x0,0x2]};[_0x3a9ea2(0x1e0)]=_0x39bd65;['inverseModelMatrix']=_0x39bd65;['clipMinimum']=[0x0,0x0,0x0];[_0x3a9ea2(0x401)]=[0x1,0x1,0x1];['renderMode']=_0x3a9ea2(0x3b0);[_0x3a9ea2(0x23e)]=0.3;[_0x3a9ea2(0x399)]=0x1;[_0x3a9ea2(0x1d8)]=0.005;[_0x3a9ea2(0x3d5)]=0x1;['colorMode']=_0x3a9ea2(0x3d3);[_0x3a9ea2(0x1ef)]=null;[_0x3a9ea2(0x448)]=_0x4e600e;['opacityStops']=_0x24bae3;[_0x3a9ea2(0x45a)]=0x0;['submittedFrameCount']=0x0;[_0x3a9ea2(0x1cc)]=0x0;['height']=0x0;['initializationGeneration']=0x0;[_0x3a9ea2(0x317)]=0x0;[_0x3a9ea2(0x37b)]=[];[_0x3a9ea2(0x345)]=[];[_0x3a9ea2(0x1df)]=[];[_0x3a9ea2(0x19f)]=new Map();[_0x3a9ea2(0x1c1)]=[];['uploadPump']=null;['uploadGeneration']=0x0;[_0x3a9ea2(0x2a5)]=null;[_0x3a9ea2(0x390)]=0x0;['uploadedBrickCount']=0x0;[_0x3a9ea2(0x19a)]=0x0;['maximumUploadBatchBytes']=0x0;[_0x3a9ea2(0x43c)]=!0x1;[_0x3a9ea2(0x1c8)]=null;constructor(_0x3d427b={}){const _0x5af594=_0x3a9ea2;this[_0x5af594(0x18c)]={..._0x3d427b};}get[_0x3a9ea2(0x465)](){const _0x59f745=_0x3a9ea2;return this[_0x59f745(0x198)];}get[_0x3a9ea2(0x2a4)](){const _0x143118=_0x3a9ea2;let _0x2932e4=this[_0x143118(0x3f0)]?.[_0x143118(0x2a4)]??{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this[_0x143118(0x18c)][_0x143118(0x234)]??this[_0x143118(0x18c)][_0x143118(0x292)]??_0x217e01,'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0},_0x18be40=this[_0x143118(0x39b)]?.[_0x143118(0x2a4)]??{'uniformUpdateCount':0x0,'resourceRebuildCount':0x0};return{'logicalBrickCount':_0x2932e4[_0x143118(0x426)],'residentBrickCount':this['atlas']?.[_0x143118(0x370)]??0x0,'pendingBrickCount':0x0,'atlasCapacity':_0x2932e4[_0x143118(0x2d0)],'gpuBytes':_0x2932e4['gpuBytes'],'memoryLimitBytes':_0x2932e4['memoryLimitBytes'],'budgetLimited':_0x2932e4[_0x143118(0x3ac)],'frameTimeMilliseconds':this[_0x143118(0x317)],'submittedFrameCount':this[_0x143118(0x43f)],'uploadedBrickCount':this[_0x143118(0x2cf)],'uploadBatchCount':this[_0x143118(0x19a)],'maximumUploadBatchBytes':this[_0x143118(0x368)],'sliceUniformUpdateCount':_0x18be40['uniformUpdateCount'],'sliceResourceRebuildCount':_0x18be40[_0x143118(0x3ad)],'skippedSamples':_0x2932e4[_0x143118(0x272)],'skippedCells':_0x2932e4[_0x143118(0x41b)]};}[_0x3a9ea2(0x3aa)](_0xa82f8a){const _0x31735e=_0x3a9ea2;this[_0x31735e(0x1c8)]=_0xa82f8a;}async[_0x3a9ea2(0x39c)](_0x16c755){const _0x16cb76=_0x3a9ea2;if(this[_0x16cb76(0x198)]===_0x16cb76(0x28a))throw Error('A\x20destroyed\x20WebGPU\x20volume\x20renderer\x20cannot\x20be\x20initialized\x20again.\x20已销毁的\x20WebGPU\x20体积渲染器不能再次初始化。');let _0x59ade6=++this[_0x16cb76(0x469)];this[_0x16cb76(0x298)](),this['canvas']=_0x16c755,this[_0x16cb76(0x198)]=_0x16cb76(0x35d);let _0x5e7f55=navigator[_0x16cb76(0x229)];if(!_0x5e7f55)throw this[_0x16cb76(0x198)]=_0x16cb76(0x1e2),Error(_0x16cb76(0x24a));let _0x4d32c0=await _0x5e7f55[_0x16cb76(0x455)]({'powerPreference':this[_0x16cb76(0x18c)][_0x16cb76(0x238)]??_0x16cb76(0x3c8)});if(_0x59ade6!==this[_0x16cb76(0x469)])return;if(!_0x4d32c0)throw this[_0x16cb76(0x198)]='idle',Error('Failed\x20to\x20acquire\x20a\x20WebGPU\x20adapter\x20for\x20the\x20volume\x20scene.\x20无法为体积场景获取\x20WebGPU\x20adapter。');let _0x3da3e4=await _0x4d32c0[_0x16cb76(0x18f)]();if(_0x59ade6!==this[_0x16cb76(0x469)]){_0x3da3e4[_0x16cb76(0x421)]();return;}let _0x1e56cf=_0x16c755[_0x16cb76(0x318)](_0x16cb76(0x315));if(!_0x1e56cf)throw _0x3da3e4[_0x16cb76(0x421)](),this[_0x16cb76(0x198)]=_0x16cb76(0x1e2),Error(_0x16cb76(0x43b));let _0x270ab2=_0x5e7f55[_0x16cb76(0x1f3)]();_0x1e56cf[_0x16cb76(0x1d5)]({'device':_0x3da3e4,'format':_0x270ab2,'alphaMode':_0x16cb76(0x38d),'usage':GPUTextureUsage[_0x16cb76(0x369)]|GPUTextureUsage['COPY_SRC']}),this['adapter']=_0x4d32c0,this[_0x16cb76(0x3fc)]=_0x3da3e4,this['context']=_0x1e56cf,this[_0x16cb76(0x2cd)]=_0x270ab2,_0x3da3e4[_0x16cb76(0x332)](_0x16cb76(0x492)),this[_0x16cb76(0x213)]();let _0x1012e3=await _0x3da3e4[_0x16cb76(0x2ab)]();if(_0x1012e3)throw this[_0x16cb76(0x298)](),this[_0x16cb76(0x198)]='idle',Error(_0x16cb76(0x30d)+_0x1012e3[_0x16cb76(0x442)]+_0x16cb76(0x34a));if(this['watchDeviceLost'](_0x3da3e4),this[_0x16cb76(0x198)]=_0x16cb76(0x2fc),this[_0x16cb76(0x474)]){this[_0x16cb76(0x326)](this['metadata']);let _0x5799d5=Array[_0x16cb76(0x18d)](this[_0x16cb76(0x19f)][_0x16cb76(0x489)]());await Promise['all'](_0x5799d5[_0x16cb76(0x42f)](([_0x4efea6,_0xf2e5d7])=>this[_0x16cb76(0x20c)]({'logicalIndex':_0x4efea6,'values':_0xf2e5d7},!0x1)));}this[_0x16cb76(0x47d)](),this['getProfileResources']()[_0x16cb76(0x2e9)](this[_0x16cb76(0x37b)]),this[_0x16cb76(0x1f0)]()[_0x16cb76(0x2e9)](this['cachedSlices']),this[_0x16cb76(0x1bb)]()[_0x16cb76(0x2e9)](this[_0x16cb76(0x1df)]),this[_0x16cb76(0x3df)](_0x16c755['width']||_0x16c755[_0x16cb76(0x334)]||0x1,_0x16c755['height']||_0x16c755[_0x16cb76(0x1cf)]||0x1);}['setSource'](_0x3e2eb5){const _0x109d55=_0x3a9ea2;this[_0x109d55(0x295)]+=0x1,this[_0x109d55(0x1b1)](new DOMException('Volume\x20brick\x20upload\x20was\x20superseded\x20by\x20a\x20new\x20source.\x20体积砖上传已被新数据源替代。','AbortError')),this[_0x109d55(0x474)]={..._0x3e2eb5},this['cachedBricks'][_0x109d55(0x33b)](),this['uploadedBrickCount']=0x0,this['uploadBatchCount']=0x0,this[_0x109d55(0x368)]=0x0,this[_0x109d55(0x198)]===_0x109d55(0x2fc)&&this['configureSourceResources'](_0x3e2eb5);}[_0x3a9ea2(0x380)](_0x5f2f58){const _0x42e346=_0x3a9ea2;return this[_0x42e346(0x20c)](_0x5f2f58,!0x0);}[_0x3a9ea2(0x35b)](_0x1fb2a7){const _0x18d1af=_0x3a9ea2;this[_0x18d1af(0x3f1)]()[_0x18d1af(0x19e)](_0x1fb2a7,this[_0x18d1af(0x45a)]);for(let _0x1cfd6f of _0x1fb2a7){let _0x1dbeac=this[_0x18d1af(0x19f)][_0x18d1af(0x2a8)](_0x1cfd6f);_0x1dbeac&&(this[_0x18d1af(0x19f)][_0x18d1af(0x255)](_0x1cfd6f),this[_0x18d1af(0x19f)][_0x18d1af(0x46d)](_0x1cfd6f,_0x1dbeac));}}[_0x3a9ea2(0x3b9)](_0x113594){const _0x3aedd3=_0x3a9ea2;_0x3b3848(_0x113594[_0x3aedd3(0x3f2)],'viewProjection'),_0x3b3848(_0x113594['inverseViewProjection'],_0x3aedd3(0x338)),this[_0x3aedd3(0x34b)]={'viewProjection':[..._0x113594['viewProjection']],'inverseViewProjection':[..._0x113594[_0x3aedd3(0x338)]],'cameraPosition':[..._0x113594[_0x3aedd3(0x3af)]]};}[_0x3a9ea2(0x2ee)](_0x26ee0e){const _0x216fa5=_0x3a9ea2;this[_0x216fa5(0x37b)]=_0x41f657(_0x26ee0e),this[_0x216fa5(0x283)]()[_0x216fa5(0x2e9)](_0x26ee0e);}[_0x3a9ea2(0x1a2)](_0x3526f8){const _0x525bbf=_0x3a9ea2;this[_0x525bbf(0x345)]=_0x3526f8['map'](_0x5d331f=>({..._0x5d331f})),this['getSliceResources']()[_0x525bbf(0x2e9)](_0x3526f8);}[_0x3a9ea2(0x2c1)](_0x4e511b){this['cachedAxes']=_0x41f657(_0x4e511b),this['getAxisResources']()['replace'](_0x4e511b);}['setTransfer'](_0x370490,_0x2160b2,_0x329a68){const _0x38917f=_0x3a9ea2;this[_0x38917f(0x448)]=_0x370490[_0x38917f(0x42f)](_0xbe0a91=>({'value':_0xbe0a91[_0x38917f(0x431)],'color':[..._0xbe0a91[_0x38917f(0x224)]]})),this[_0x38917f(0x32c)]=_0x2160b2['map'](_0x325ec1=>({..._0x325ec1})),_0x329a68&&(this[_0x38917f(0x330)]=_0x329a68),this[_0x38917f(0x198)]===_0x38917f(0x2fc)&&this['updateTransferResources']();}[_0x3a9ea2(0x3a6)](_0x1cd242){const _0x410f78=_0x3a9ea2;_0x1cd242['modelMatrix']&&(_0x3b3848(_0x1cd242[_0x410f78(0x1e0)],_0x410f78(0x1e0)),this[_0x410f78(0x1e0)]=[..._0x1cd242[_0x410f78(0x1e0)]]),_0x1cd242[_0x410f78(0x1ca)]&&(_0x3b3848(_0x1cd242[_0x410f78(0x1ca)],_0x410f78(0x1ca)),this[_0x410f78(0x1ca)]=[..._0x1cd242['inverseModelMatrix']]),_0x1cd242[_0x410f78(0x26c)]&&(this['clipMinimum']=[..._0x1cd242[_0x410f78(0x26c)]]),_0x1cd242[_0x410f78(0x401)]&&(this['clipMaximum']=[..._0x1cd242[_0x410f78(0x401)]]),_0x1cd242[_0x410f78(0x2c4)]&&(this[_0x410f78(0x2c4)]=_0x1cd242[_0x410f78(0x2c4)]),_0x1cd242[_0x410f78(0x23e)]!==void 0x0&&(this['opacity']=_0x4f0969(_0x1cd242[_0x410f78(0x23e)],_0x410f78(0x23e))),_0x1cd242[_0x410f78(0x399)]!==void 0x0&&(this[_0x410f78(0x399)]=_0x4f0969(_0x1cd242[_0x410f78(0x399)],_0x410f78(0x399))),_0x1cd242[_0x410f78(0x1d8)]!==void 0x0&&(this[_0x410f78(0x1d8)]=_0x51dc63(_0x1cd242['stepLength'],_0x410f78(0x1d8))),_0x1cd242['volumeDimFactor']!==void 0x0&&(this[_0x410f78(0x3d5)]=_0x4f0969(_0x1cd242[_0x410f78(0x3d5)],_0x410f78(0x3d5))),_0x1cd242['colorMode']&&(this['colorMode']=_0x1cd242[_0x410f78(0x330)]),_0x1cd242[_0x410f78(0x1ef)]!==void 0x0&&(this[_0x410f78(0x1ef)]=_0x1cd242['geographicTransform']?{..._0x1cd242['geographicTransform']}:null);}[_0x3a9ea2(0x3df)](_0x5a48e1,_0x137758){const _0x8ca299=_0x3a9ea2;if(!Number[_0x8ca299(0x34f)](_0x5a48e1)||!Number[_0x8ca299(0x34f)](_0x137758)||_0x5a48e1<=0x0||_0x137758<=0x0)throw Error(_0x8ca299(0x48a));let _0x2aae13=this['getCanvas']();_0x2aae13[_0x8ca299(0x1cc)]=_0x5a48e1,_0x2aae13[_0x8ca299(0x22a)]=_0x137758,this[_0x8ca299(0x1cc)]=_0x5a48e1,this[_0x8ca299(0x22a)]=_0x137758,this[_0x8ca299(0x1a0)]()['resize'](_0x5a48e1,_0x137758),this[_0x8ca299(0x31f)]();}[_0x3a9ea2(0x273)](){const _0x194b18=_0x3a9ea2;if(this['lifecycleState']!==_0x194b18(0x2fc)||!this[_0x194b18(0x474)]||this[_0x194b18(0x1cc)]<=0x0||this[_0x194b18(0x22a)]<=0x0||this['frameInFlight'])return!0x1;let _0x4b822a=performance[_0x194b18(0x2f2)]();this[_0x194b18(0x45a)]+=0x1,this[_0x194b18(0x44e)]();let _0x275399=this[_0x194b18(0x24f)](),_0x4a3a83=_0x275399[_0x194b18(0x375)]({'label':'volume\x20scene\x20frame'}),_0x1587d5=this[_0x194b18(0x318)]()['getCurrentTexture']()['createView']();return this[_0x194b18(0x3e6)](_0x4a3a83,_0x1587d5),this[_0x194b18(0x3ff)](_0x4a3a83,_0x1587d5),this[_0x194b18(0x254)](_0x4a3a83,_0x1587d5),_0x275399['queue'][_0x194b18(0x1e4)]([_0x4a3a83[_0x194b18(0x1fa)]()]),this[_0x194b18(0x43c)]=!0x0,this[_0x194b18(0x43f)]+=0x1,this[_0x194b18(0x317)]=Math[_0x194b18(0x1ac)](0.000001,performance['now']()-_0x4b822a),_0x275399[_0x194b18(0x3c7)][_0x194b18(0x41e)]()[_0x194b18(0x481)](()=>{const _0x3d0751=_0x194b18;this[_0x3d0751(0x3fc)]!==_0x275399||this['lifecycleState']!==_0x3d0751(0x2fc)||(this[_0x3d0751(0x43c)]=!0x1,this[_0x3d0751(0x1c8)]?.());})[_0x194b18(0x1d7)](()=>{const _0x1f9f30=_0x194b18;this[_0x1f9f30(0x3fc)]===_0x275399&&(this[_0x1f9f30(0x43c)]=!0x1);}),!0x0;}async['captureFrame'](){const _0x556faa=_0x3a9ea2;if(this[_0x556faa(0x198)]!=='ready'||!this[_0x556faa(0x474)]||this[_0x556faa(0x1cc)]<=0x0||this['height']<=0x0)throw Error(_0x556faa(0x2f8));let _0x32f778=this[_0x556faa(0x24f)](),_0x338ef4=this[_0x556faa(0x1cc)]*0x4,_0x339680=Math['ceil'](_0x338ef4/0x100)*0x100,_0x44cacd=_0x32f778[_0x556faa(0x242)]({'label':'volume\x20frame\x20readback','size':_0x339680*this['height'],'usage':GPUBufferUsage[_0x556faa(0x1f4)]|GPUBufferUsage[_0x556faa(0x487)]});_0x32f778[_0x556faa(0x332)](_0x556faa(0x492)),this['frameIndex']+=0x1,this[_0x556faa(0x44e)]();let _0x465d72=_0x32f778[_0x556faa(0x375)]({'label':_0x556faa(0x276)}),_0x176c4a=this['getContext']()[_0x556faa(0x3ba)](),_0x4d9316=_0x176c4a[_0x556faa(0x429)]();this[_0x556faa(0x3e6)](_0x465d72,_0x4d9316),this[_0x556faa(0x3ff)](_0x465d72,_0x4d9316),this['encodeOverlayPass'](_0x465d72,_0x4d9316),_0x465d72[_0x556faa(0x395)]({'texture':_0x176c4a},{'buffer':_0x44cacd,'bytesPerRow':_0x339680,'rowsPerImage':this[_0x556faa(0x22a)]},[this[_0x556faa(0x1cc)],this['height']]),_0x32f778[_0x556faa(0x3c7)]['submit']([_0x465d72[_0x556faa(0x1fa)]()]);let _0xe1c27b=await _0x32f778[_0x556faa(0x2ab)]();if(_0xe1c27b)throw _0x44cacd[_0x556faa(0x421)](),Error(_0x556faa(0x30a)+_0xe1c27b['message']+_0x556faa(0x2ca));await _0x44cacd[_0x556faa(0x453)](GPUMapMode[_0x556faa(0x252)]);let _0x377926=new Uint8Array(_0x44cacd[_0x556faa(0x1b6)]()),_0x41595c=new Uint8Array(_0x338ef4*this[_0x556faa(0x22a)]),_0x49d36d=this[_0x556faa(0x2f1)]()===_0x556faa(0x2fd);for(let _0x560e8f=0x0;_0x560e8f<this[_0x556faa(0x22a)];_0x560e8f+=0x1){let _0x2b5b9b=_0x377926[_0x556faa(0x2ef)](_0x560e8f*_0x339680,_0x560e8f*_0x339680+_0x338ef4),_0x379bd0=_0x560e8f*_0x338ef4;if(!_0x49d36d){_0x41595c[_0x556faa(0x46d)](_0x2b5b9b,_0x379bd0);continue;}for(let _0x24940a=0x0;_0x24940a<this[_0x556faa(0x1cc)];_0x24940a+=0x1){let _0x1a5354=_0x24940a*0x4,_0x1340e7=_0x379bd0+_0x1a5354;_0x41595c[_0x1340e7]=_0x2b5b9b[_0x1a5354+0x2],_0x41595c[_0x1340e7+0x1]=_0x2b5b9b[_0x1a5354+0x1],_0x41595c[_0x1340e7+0x2]=_0x2b5b9b[_0x1a5354],_0x41595c[_0x1340e7+0x3]=_0x2b5b9b[_0x1a5354+0x3];}}return _0x44cacd['unmap'](),_0x44cacd[_0x556faa(0x421)](),this[_0x556faa(0x43f)]+=0x1,{'width':this[_0x556faa(0x1cc)],'height':this[_0x556faa(0x22a)],'pixels':_0x41595c};}['destroy'](){const _0x2a7110=_0x3a9ea2;this[_0x2a7110(0x198)]!==_0x2a7110(0x28a)&&(++this[_0x2a7110(0x469)],this['releaseGpuResources'](),this['canvas']=null,this[_0x2a7110(0x474)]=null,this[_0x2a7110(0x1c8)]=null,this['lifecycleState']=_0x2a7110(0x28a));}[_0x3a9ea2(0x213)](){const _0x907d16=_0x3a9ea2;let _0x5db96=this[_0x907d16(0x24f)]();this[_0x907d16(0x235)]=_0x5db96[_0x907d16(0x242)]({'label':_0x907d16(0x267),'size':0x190,'usage':GPUBufferUsage[_0x907d16(0x215)]|GPUBufferUsage[_0x907d16(0x1f4)]}),this[_0x907d16(0x225)]=_0x5db96[_0x907d16(0x242)]({'label':_0x907d16(0x41c),'size':0x60,'usage':GPUBufferUsage['UNIFORM']|GPUBufferUsage[_0x907d16(0x1f4)]}),this[_0x907d16(0x371)]=_0x5db96['createBindGroupLayout']({'label':_0x907d16(0x475),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x907d16(0x3c3)]|GPUShaderStage[_0x907d16(0x38e)],'buffer':{'type':_0x907d16(0x2b5)}}]}),this[_0x907d16(0x207)]=_0x5db96[_0x907d16(0x1c3)]({'label':'volume\x20scene\x20bind\x20group\x20layout','entries':[{'binding':0x0,'visibility':GPUShaderStage['VERTEX']|GPUShaderStage['FRAGMENT'],'buffer':{'type':_0x907d16(0x2b5)}},{'binding':0x1,'visibility':GPUShaderStage[_0x907d16(0x38e)],'texture':{'sampleType':_0x907d16(0x30f)}}]}),this[_0x907d16(0x3a4)]=_0x5db96[_0x907d16(0x1c3)]({'label':_0x907d16(0x3c6),'entries':[...Array[_0x907d16(0x18d)]({'length':0x8},(_0x3f8c6f,_0x133d94)=>({'binding':_0x133d94,'visibility':GPUShaderStage[_0x907d16(0x38e)],'texture':{'sampleType':_0x907d16(0x2c2),'viewDimension':'3d'}})),{'binding':0x8,'visibility':GPUShaderStage[_0x907d16(0x38e)],'buffer':{'type':_0x907d16(0x366)}},{'binding':0x9,'visibility':GPUShaderStage[_0x907d16(0x38e)],'buffer':{'type':'uniform'}}]}),this[_0x907d16(0x37c)]=_0x5db96[_0x907d16(0x1c3)]({'label':_0x907d16(0x3ec),'entries':[0x0,0x1,0x2,0x3][_0x907d16(0x42f)](_0x105752=>({'binding':_0x105752,'visibility':GPUShaderStage[_0x907d16(0x38e)],'buffer':{'type':_0x907d16(0x366)}}))}),this['sliceBindGroupLayout']=_0x5db96[_0x907d16(0x1c3)]({'label':_0x907d16(0x1f1),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x907d16(0x3c3)]|GPUShaderStage[_0x907d16(0x38e)],'buffer':{'type':_0x907d16(0x2b5)}}]}),this['attachments']=new _0x5b4554(_0x5db96),this['transferResources']=new _0x49e786(_0x5db96),this[_0x907d16(0x1ce)]=new _0x7a802e(_0x5db96),this['sliceResources']=new _0x1d4dd8(_0x5db96,this[_0x907d16(0x24c)]()),this[_0x907d16(0x2da)]=new _0x7a802e(_0x5db96),this[_0x907d16(0x218)]();}[_0x3a9ea2(0x218)](){const _0x2a8b09=_0x3a9ea2;let _0x7307ee=this['getDevice'](),_0x183d00=this[_0x2a8b09(0x2f1)](),_0x59b52d=this['getGeometryBindGroupLayout'](),_0x3b4f2c=this[_0x2a8b09(0x25b)](),_0x3ae2bd=_0x7307ee[_0x2a8b09(0x41d)]({'label':_0x2a8b09(0x25d),'code':_0x4fab04}),_0x15e175={'module':_0x3ae2bd,'entryPoint':'vertexMain','buffers':[{'arrayStride':0x1c,'attributes':[{'shaderLocation':0x0,'offset':0x0,'format':'float32x3'},{'shaderLocation':0x1,'offset':0xc,'format':_0x2a8b09(0x1b5)}]}]},_0x107139={'module':_0x3ae2bd,'entryPoint':_0x2a8b09(0x1a8),'targets':[{'format':_0x183d00,'blend':_0x1c2b5e()}]},_0x4c0137=(_0x2bef7a,_0x3dbcbb)=>_0x7307ee['createRenderPipeline']({'layout':_0x7307ee[_0x2a8b09(0x40b)]({'bindGroupLayouts':[_0x59b52d]}),'vertex':_0x15e175,'fragment':_0x107139,'primitive':{'topology':_0x2bef7a},'depthStencil':_0x3dbcbb?{'format':_0x2a8b09(0x249),'depthWriteEnabled':!0x0,'depthCompare':_0x2a8b09(0x404)}:void 0x0});this[_0x2a8b09(0x32b)]=_0x4c0137(_0x2a8b09(0x29b),!0x0),this['sceneLinePipeline']=_0x4c0137(_0x2a8b09(0x186),!0x0),this[_0x2a8b09(0x3e4)]=_0x4c0137(_0x2a8b09(0x29b),!0x1),this[_0x2a8b09(0x1ad)]=_0x4c0137(_0x2a8b09(0x186),!0x1);let _0x54b764=_0x7307ee[_0x2a8b09(0x41d)]({'label':'volume\x20raymarch\x20shader','code':_0x133e48});this['volumePipeline']=_0x7307ee[_0x2a8b09(0x34c)]({'layout':_0x7307ee['createPipelineLayout']({'bindGroupLayouts':[_0x3b4f2c,this['getVolumeBindGroupLayout'](),this[_0x2a8b09(0x452)]()]}),'vertex':{'module':_0x54b764,'entryPoint':'vertexMain'},'fragment':{'module':_0x54b764,'entryPoint':_0x2a8b09(0x1a8),'targets':[{'format':_0x183d00,'blend':_0x1c2b5e()}]},'primitive':{'topology':_0x2a8b09(0x29b)}});let _0x3e02b9=_0x7307ee[_0x2a8b09(0x41d)]({'label':_0x2a8b09(0x45f),'code':_0x3f7251}),_0x3c23ef=_0x4f6a88=>_0x7307ee[_0x2a8b09(0x34c)]({'layout':_0x7307ee[_0x2a8b09(0x40b)]({'bindGroupLayouts':[_0x59b52d,this[_0x2a8b09(0x259)](),this[_0x2a8b09(0x452)](),this['getSliceBindGroupLayout']()]}),'vertex':{'module':_0x3e02b9,'entryPoint':_0x2a8b09(0x2e2)},'fragment':{'module':_0x3e02b9,'entryPoint':_0x2a8b09(0x1a8),'targets':[{'format':_0x183d00,'blend':_0x1c2b5e()}]},'primitive':{'topology':_0x2a8b09(0x29b)},'depthStencil':_0x4f6a88?{'format':'depth32float','depthWriteEnabled':!0x0,'depthCompare':_0x2a8b09(0x404)}:void 0x0});this[_0x2a8b09(0x19d)]=_0x3c23ef(!0x0),this[_0x2a8b09(0x1a6)]=_0x3c23ef(!0x1);}[_0x3a9ea2(0x326)](_0x2ea177){const _0x56216c=_0x3a9ea2;this[_0x56216c(0x3f0)]?.[_0x56216c(0x421)](),this[_0x56216c(0x3f0)]=new _0x43815a(this['getDevice'](),this[_0x56216c(0x18c)][_0x56216c(0x292)]??_0x217e01,this[_0x56216c(0x18c)][_0x56216c(0x234)]??this[_0x56216c(0x18c)][_0x56216c(0x292)]??_0x217e01),this['atlas'][_0x56216c(0x1d5)](_0x2ea177),this[_0x56216c(0x413)](),this[_0x56216c(0x313)]=this['atlas'][_0x56216c(0x31e)](this[_0x56216c(0x259)](),this[_0x56216c(0x1be)]());}[_0x3a9ea2(0x20c)](_0x11dda5,_0x177044){return new Promise((_0x23dfc3,_0x221cca)=>{const _0x1d892d=_0x571d;this['pendingBrickUploads'][_0x1d892d(0x23d)]({'upload':_0x11dda5,'generation':this['uploadGeneration'],'cacheOnSuccess':_0x177044,'resolve':_0x23dfc3,'reject':_0x221cca}),this[_0x1d892d(0x28b)]();});}[_0x3a9ea2(0x28b)](){const _0x13c281=_0x3a9ea2;this[_0x13c281(0x27d)]||=Promise['resolve']()['then'](()=>this[_0x13c281(0x488)]())[_0x13c281(0x205)](()=>{const _0x38738a=_0x13c281;this['uploadPump']=null,this['pendingBrickUploads'][_0x38738a(0x2e8)]>0x0&&this[_0x38738a(0x198)]===_0x38738a(0x2fc)&&this[_0x38738a(0x28b)]();});}async[_0x3a9ea2(0x488)](){const _0xdeff42=_0x3a9ea2;for(;this[_0xdeff42(0x1c1)][_0xdeff42(0x2e8)]>0x0&&this[_0xdeff42(0x198)]===_0xdeff42(0x2fc)&&this[_0xdeff42(0x474)];){let _0x201176=this['getDevice'](),_0x4ecbb6=_0x1d5ecd(this[_0xdeff42(0x474)]),_0x241320=Math[_0xdeff42(0x3e9)](0x4000000,Math[_0xdeff42(0x1ac)](_0x4ecbb6,Math[_0xdeff42(0x248)](_0x201176[_0xdeff42(0x373)]['maxBufferSize']/0x4))),_0x2e80d8=[],_0x21e5e9=0x0;for(;this[_0xdeff42(0x1c1)][_0xdeff42(0x2e8)]>0x0&&_0x2e80d8[_0xdeff42(0x2e8)]<0x10;){let _0xbc5f60=this['pendingBrickUploads'][0x0];if(_0x2e80d8[_0xdeff42(0x2e8)]>0x0&&_0x21e5e9+_0x4ecbb6>_0x241320)break;if(this[_0xdeff42(0x1c1)][_0xdeff42(0x3fa)](),_0xbc5f60[_0xdeff42(0x352)]!==this['uploadGeneration']){_0xbc5f60[_0xdeff42(0x48c)](new DOMException(_0xdeff42(0x18b),_0xdeff42(0x3bd)));continue;}_0x2e80d8[_0xdeff42(0x23d)](_0xbc5f60),_0x21e5e9+=_0x4ecbb6;}if(_0x2e80d8['length']!==0x0)try{let _0x1b9aba=[],_0x28f495=0x0;for(let _0x2981a7 of _0x2e80d8){let _0x3ddaa0=this[_0xdeff42(0x3f1)]()[_0xdeff42(0x3d4)](_0x2981a7[_0xdeff42(0x386)],this[_0xdeff42(0x45a)]),_0x37b9f4=Math[_0xdeff42(0x37e)](_0x28f495/0x100)*0x100;_0x1b9aba[_0xdeff42(0x23d)]({'item':_0x2981a7,'prepared':_0x3ddaa0,'bufferOffset':_0x37b9f4}),_0x28f495=_0x37b9f4+_0x3ddaa0[_0xdeff42(0x1a1)]['byteLength'];}let _0x35ebbc=this[_0xdeff42(0x456)](_0x28f495);await _0x35ebbc[_0xdeff42(0x453)](GPUMapMode[_0xdeff42(0x409)]);let _0x4f8f3d=new Uint8Array(_0x35ebbc[_0xdeff42(0x1b6)]());for(let _0x58257f of _0x1b9aba){let _0x3706f7=_0x58257f[_0xdeff42(0x447)]['values'];_0x4f8f3d['set'](new Uint8Array(_0x3706f7[_0xdeff42(0x47e)],_0x3706f7[_0xdeff42(0x48e)],_0x3706f7['byteLength']),_0x58257f[_0xdeff42(0x350)]);}_0x35ebbc[_0xdeff42(0x28e)]();let _0x786703=_0x201176['createCommandEncoder']({'label':_0xdeff42(0x48f)});for(let _0x5d0b62 of _0x1b9aba)this[_0xdeff42(0x3f1)]()[_0xdeff42(0x394)](_0x786703,_0x35ebbc,_0x5d0b62['bufferOffset'],_0x5d0b62[_0xdeff42(0x447)]);_0x201176['queue']['submit']([_0x786703[_0xdeff42(0x1fa)]()]),await _0x201176['queue']['onSubmittedWorkDone'](),await new Promise(_0x1133df=>setTimeout(_0x1133df,0x0)),this[_0xdeff42(0x2cf)]+=_0x2e80d8[_0xdeff42(0x2e8)],this[_0xdeff42(0x19a)]+=0x1,this[_0xdeff42(0x368)]=Math[_0xdeff42(0x1ac)](this[_0xdeff42(0x368)],_0x21e5e9);for(let _0x5bad3e of _0x2e80d8){if(_0x5bad3e[_0xdeff42(0x352)]!==this[_0xdeff42(0x295)]){_0x5bad3e['reject'](new DOMException(_0xdeff42(0x18b),_0xdeff42(0x3bd)));continue;}_0x5bad3e[_0xdeff42(0x382)]&&this[_0xdeff42(0x184)](_0x5bad3e[_0xdeff42(0x386)]),_0x5bad3e[_0xdeff42(0x203)]();}}catch(_0x595de3){for(let _0xed93e1 of _0x2e80d8)_0xed93e1[_0xdeff42(0x48c)](_0x595de3);}}}['getUploadStagingBuffer'](_0x395b83){const _0x2b922c=_0x3a9ea2;let _0x47e98b=Math[_0x2b922c(0x1ac)](0x100,Math['ceil'](_0x395b83/0x100)*0x100);return this[_0x2b922c(0x2a5)]&&this[_0x2b922c(0x390)]>=_0x47e98b?this[_0x2b922c(0x2a5)]:(this['uploadStagingBuffer']?.[_0x2b922c(0x421)](),this[_0x2b922c(0x2a5)]=this['getDevice']()['createBuffer']({'label':_0x2b922c(0x2a3),'size':_0x47e98b,'usage':GPUBufferUsage[_0x2b922c(0x1b9)]|GPUBufferUsage[_0x2b922c(0x33f)]}),this['uploadStagingBufferSize']=_0x47e98b,this[_0x2b922c(0x2a5)]);}['cacheBrickUpload'](_0x537889){const _0x3a71a7=_0x3a9ea2;for(this['cachedBricks'][_0x3a71a7(0x255)](_0x537889[_0x3a71a7(0x1e5)]),this[_0x3a71a7(0x19f)][_0x3a71a7(0x46d)](_0x537889['logicalIndex'],new Float32Array(_0x537889[_0x3a71a7(0x1a1)]));this[_0x3a71a7(0x19f)][_0x3a71a7(0x439)]>this[_0x3a71a7(0x2a4)][_0x3a71a7(0x2d0)];){let _0x1994e4=this[_0x3a71a7(0x19f)][_0x3a71a7(0x1c4)]()[_0x3a71a7(0x43d)]()['value'];if(_0x1994e4===void 0x0)break;this[_0x3a71a7(0x19f)][_0x3a71a7(0x255)](_0x1994e4);}}[_0x3a9ea2(0x1b1)](_0x36d560){const _0x519989=_0x3a9ea2;for(let _0x11e67c of this[_0x519989(0x1c1)][_0x519989(0x1c5)](0x0))_0x11e67c['reject'](_0x36d560);}[_0x3a9ea2(0x47d)](){const _0x878032=_0x3a9ea2;let _0x3f34ec=this['getTransferResources']();_0x3f34ec[_0x878032(0x3a6)](this[_0x878032(0x448)],this[_0x878032(0x32c)]),this['transferBindGroup']=_0x3f34ec[_0x878032(0x31e)](this[_0x878032(0x452)]());}[_0x3a9ea2(0x31f)](){const _0x24325d=_0x3a9ea2;!this['sceneParamsBuffer']||!this[_0x24325d(0x223)]||!this[_0x24325d(0x371)]||!this[_0x24325d(0x207)]||(this[_0x24325d(0x3b6)]=this[_0x24325d(0x24f)]()['createBindGroup']({'label':'volume\x20geometry\x20bind\x20group','layout':this[_0x24325d(0x371)],'entries':[{'binding':0x0,'resource':{'buffer':this[_0x24325d(0x235)]}}]}),this[_0x24325d(0x3ab)]=this[_0x24325d(0x24f)]()[_0x24325d(0x31e)]({'label':_0x24325d(0x33c),'layout':this[_0x24325d(0x207)],'entries':[{'binding':0x0,'resource':{'buffer':this[_0x24325d(0x235)]}},{'binding':0x1,'resource':this[_0x24325d(0x223)]['sceneDepthView']}]}));}[_0x3a9ea2(0x44e)](){const _0x3dcf62=_0x3a9ea2;let _0x3e13dd=new Float32Array(0x64);_0x3e13dd['set'](this['camera'][_0x3dcf62(0x3f2)],0x0),_0x3e13dd[_0x3dcf62(0x46d)](this[_0x3dcf62(0x34b)]['inverseViewProjection'],0x10),_0x3e13dd[_0x3dcf62(0x46d)](this[_0x3dcf62(0x1e0)],0x20),_0x3e13dd[_0x3dcf62(0x46d)](this[_0x3dcf62(0x1ca)],0x30),_0x3e13dd[_0x3dcf62(0x46d)]([...this[_0x3dcf62(0x34b)][_0x3dcf62(0x3af)],0x1],0x40),_0x3e13dd[_0x3dcf62(0x46d)]([this['width'],this['height'],0x1/this[_0x3dcf62(0x1cc)],0x1/this['height']],0x44),_0x3e13dd[_0x3dcf62(0x46d)]([...this[_0x3dcf62(0x26c)],0x0],0x48),_0x3e13dd[_0x3dcf62(0x46d)]([...this[_0x3dcf62(0x401)],0x0],0x4c),_0x3e13dd['set']([+(this[_0x3dcf62(0x2c4)]===_0x3dcf62(0x1dd)),this[_0x3dcf62(0x23e)],this['densityScale'],this[_0x3dcf62(0x1d8)]],0x50),_0x3e13dd[_0x3dcf62(0x46d)]([this[_0x3dcf62(0x448)][_0x3dcf62(0x2e8)],this[_0x3dcf62(0x32c)][_0x3dcf62(0x2e8)],this[_0x3dcf62(0x3d5)],+(this['colorMode']===_0x3dcf62(0x301))],0x54);let _0x349ac2=this[_0x3dcf62(0x1ef)];_0x349ac2&&(_0x3e13dd[_0x3dcf62(0x46d)]([0x1,..._0x349ac2[_0x3dcf62(0x320)]],0x58),_0x3e13dd[_0x3dcf62(0x46d)]([_0x349ac2[_0x3dcf62(0x2f4)],_0x349ac2['semiMinorAxisScaled'],..._0x349ac2['longitudeRadians']],0x5c),_0x3e13dd[_0x3dcf62(0x46d)]([..._0x349ac2[_0x3dcf62(0x245)],..._0x349ac2[_0x3dcf62(0x403)]],0x60)),this[_0x3dcf62(0x24f)]()[_0x3dcf62(0x3c7)][_0x3dcf62(0x311)](this[_0x3dcf62(0x3a1)](),0x0,_0x3e13dd);}[_0x3a9ea2(0x413)](){const _0x179bdf=_0x3a9ea2;let _0x3ceb47=this['metadata'],_0x265df2=this[_0x179bdf(0x3f0)];if(!_0x3ceb47||!_0x265df2)return;let _0x196df1=_0x265df2[_0x179bdf(0x293)],_0x4935ab=new Uint32Array(0x60/0x4),_0x3a030f=Math[_0x179bdf(0x37e)](_0x3ceb47[_0x179bdf(0x1f2)][_0x179bdf(0x25f)]/_0x3ceb47['brickWidth']),_0x14542a=Math[_0x179bdf(0x37e)](_0x3ceb47[_0x179bdf(0x42c)][_0x179bdf(0x25f)]/_0x3ceb47[_0x179bdf(0x306)]),_0x28ad26=Math[_0x179bdf(0x37e)](_0x3ceb47[_0x179bdf(0x46c)][_0x179bdf(0x25f)]/_0x3ceb47['brickDepth']);_0x4935ab[_0x179bdf(0x46d)]([_0x3ceb47[_0x179bdf(0x1f2)][_0x179bdf(0x25f)],_0x3ceb47[_0x179bdf(0x42c)]['count'],_0x3ceb47['zAxis'][_0x179bdf(0x25f)],0x0],0x0),_0x4935ab[_0x179bdf(0x46d)]([_0x3ceb47[_0x179bdf(0x357)],_0x3ceb47[_0x179bdf(0x306)],_0x3ceb47[_0x179bdf(0x430)],0x1],0x4),_0x4935ab[_0x179bdf(0x46d)]([_0x3a030f,_0x14542a,_0x28ad26,0x0],0x8),_0x4935ab[_0x179bdf(0x46d)]([_0x196df1[_0x179bdf(0x257)],_0x196df1[_0x179bdf(0x3bf)],_0x196df1[_0x179bdf(0x491)],_0x196df1[_0x179bdf(0x2b6)]],0xc),_0x4935ab[_0x179bdf(0x46d)]([(_0x3ceb47['brickWidth']+0x2)*_0x196df1[_0x179bdf(0x257)],(_0x3ceb47[_0x179bdf(0x306)]+0x2)*_0x196df1[_0x179bdf(0x3bf)],(_0x3ceb47[_0x179bdf(0x430)]+0x2)*_0x196df1[_0x179bdf(0x491)],0x0],0x10),new Float32Array(_0x4935ab['buffer'])['set']([_0x3ceb47['noData']??0x0,_0x3ceb47['noData']===void 0x0?0x0:0x1,0x0,0x0],0x14),this[_0x179bdf(0x24f)]()['queue']['writeBuffer'](this[_0x179bdf(0x1be)](),0x0,_0x4935ab);}[_0x3a9ea2(0x3e6)](_0x357b3b,_0x29d719){const _0x27d751=_0x3a9ea2;let _0x588a82=_0x357b3b[_0x27d751(0x323)]({'label':_0x27d751(0x377),'colorAttachments':[{'view':_0x29d719,'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':_0x27d751(0x33b),'storeOp':_0x27d751(0x281)}],'depthStencilAttachment':{'view':this[_0x27d751(0x1a0)]()[_0x27d751(0x29f)],'depthClearValue':0x1,'depthLoadOp':'clear','depthStoreOp':_0x27d751(0x281)}});this[_0x27d751(0x17c)](_0x588a82,_0x27d751(0x221)),this[_0x27d751(0x2bb)](_0x588a82,_0x27d751(0x221)),_0x588a82[_0x27d751(0x1e7)]();}[_0x3a9ea2(0x3ff)](_0xe751e8,_0x2edc1d){const _0x1c1f1a=_0x3a9ea2;if(!this[_0x1c1f1a(0x313)]||!this[_0x1c1f1a(0x36e)]||!this[_0x1c1f1a(0x3ab)]||!this[_0x1c1f1a(0x188)])return;let _0x4acd11=_0xe751e8['beginRenderPass']({'label':_0x1c1f1a(0x22e),'colorAttachments':[{'view':_0x2edc1d,'loadOp':_0x1c1f1a(0x412),'storeOp':_0x1c1f1a(0x281)}]});_0x4acd11[_0x1c1f1a(0x296)](this[_0x1c1f1a(0x188)]),_0x4acd11[_0x1c1f1a(0x324)](0x0,this[_0x1c1f1a(0x3ab)]),_0x4acd11[_0x1c1f1a(0x324)](0x1,this['volumeBindGroup']),_0x4acd11['setBindGroup'](0x2,this[_0x1c1f1a(0x36e)]),_0x4acd11[_0x1c1f1a(0x308)](0x3),_0x4acd11[_0x1c1f1a(0x1e7)]();}[_0x3a9ea2(0x254)](_0xdc106a,_0x48cf7b){const _0x37a97d=_0x3a9ea2;let _0xfb483b=_0xdc106a[_0x37a97d(0x323)]({'label':'volume\x20always\x20visible\x20pass','colorAttachments':[{'view':_0x48cf7b,'loadOp':_0x37a97d(0x412),'storeOp':_0x37a97d(0x281)}]});this[_0x37a97d(0x17c)](_0xfb483b,_0x37a97d(0x2c7)),this[_0x37a97d(0x2bb)](_0xfb483b,_0x37a97d(0x2c7)),_0xfb483b[_0x37a97d(0x1e7)]();}[_0x3a9ea2(0x17c)](_0x17c687,_0x78b1b0){const _0x491c9f=_0x3a9ea2;let _0x5cb89a=this['geometryBindGroup'];if(!_0x5cb89a)return;let _0x472757=_0x78b1b0===_0x491c9f(0x221)?this['sceneTrianglePipeline']:this[_0x491c9f(0x3e4)],_0xe86e78=_0x78b1b0===_0x491c9f(0x221)?this[_0x491c9f(0x18a)]:this[_0x491c9f(0x1ad)];_0x472757&&(_0x17c687['setPipeline'](_0x472757),_0x17c687[_0x491c9f(0x324)](0x0,_0x5cb89a),this[_0x491c9f(0x1ce)]?.[_0x491c9f(0x308)](_0x17c687,_0x491c9f(0x29b),_0x78b1b0),this['axisResources']?.[_0x491c9f(0x308)](_0x17c687,_0x491c9f(0x29b),_0x78b1b0)),_0xe86e78&&(_0x17c687[_0x491c9f(0x296)](_0xe86e78),_0x17c687[_0x491c9f(0x324)](0x0,_0x5cb89a),this[_0x491c9f(0x1ce)]?.[_0x491c9f(0x308)](_0x17c687,_0x491c9f(0x186),_0x78b1b0),this[_0x491c9f(0x2da)]?.[_0x491c9f(0x308)](_0x17c687,_0x491c9f(0x186),_0x78b1b0));}[_0x3a9ea2(0x2bb)](_0x2b4447,_0x573830){const _0x530eb0=_0x3a9ea2;let _0x349921=_0x573830===_0x530eb0(0x221)?this['sceneSlicePipeline']:this[_0x530eb0(0x1a6)];!_0x349921||!this['geometryBindGroup']||!this[_0x530eb0(0x313)]||!this[_0x530eb0(0x36e)]||(_0x2b4447[_0x530eb0(0x324)](0x0,this[_0x530eb0(0x3b6)]),_0x2b4447['setBindGroup'](0x1,this['volumeBindGroup']),_0x2b4447[_0x530eb0(0x324)](0x2,this[_0x530eb0(0x36e)]),this['sliceResources']?.[_0x530eb0(0x308)](_0x2b4447,_0x349921,_0x573830));}['watchDeviceLost'](_0xcb6b2c){const _0x5c4f78=_0x3a9ea2;_0xcb6b2c[_0x5c4f78(0x466)][_0x5c4f78(0x481)](_0x39e0bd=>{const _0x3945c8=_0x5c4f78;if(this[_0x3945c8(0x3fc)]!==_0xcb6b2c||this[_0x3945c8(0x198)]===_0x3945c8(0x28a))return;this[_0x3945c8(0x198)]='lost',console[_0x3945c8(0x381)](_0x3945c8(0x2cb)+_0x39e0bd[_0x3945c8(0x442)]+'.\x20WebGPU\x20体积设备已丢失。');let _0x3aa766=this[_0x3945c8(0x29d)];this[_0x3945c8(0x298)](),_0x3aa766&&this['initialize'](_0x3aa766)[_0x3945c8(0x1d7)](_0x5d2f0d=>{const _0x41379c=_0x3945c8;console[_0x41379c(0x381)]('WebGPU\x20volume\x20device\x20restoration\x20failed.\x20WebGPU\x20体积设备恢复失败。',_0x5d2f0d);});});}[_0x3a9ea2(0x298)](){const _0x771306=_0x3a9ea2;this[_0x771306(0x295)]+=0x1,this[_0x771306(0x1b1)](new DOMException(_0x771306(0x385),_0x771306(0x3bd))),this[_0x771306(0x3f0)]?.[_0x771306(0x421)](),this['transferResources']?.['destroy'](),this[_0x771306(0x1ce)]?.[_0x771306(0x421)](),this[_0x771306(0x39b)]?.[_0x771306(0x421)](),this['axisResources']?.['destroy'](),this[_0x771306(0x223)]?.[_0x771306(0x421)](),this[_0x771306(0x235)]?.[_0x771306(0x421)](),this[_0x771306(0x225)]?.[_0x771306(0x421)](),this['uploadStagingBuffer']?.[_0x771306(0x421)]();try{this['context']?.[_0x771306(0x459)]();}catch{}this[_0x771306(0x3fc)]?.[_0x771306(0x421)](),this[_0x771306(0x2d5)]=null,this['device']=null,this[_0x771306(0x2b7)]=null,this[_0x771306(0x2cd)]=null,this['sceneParamsBuffer']=null,this[_0x771306(0x225)]=null,this['uploadStagingBuffer']=null,this['uploadStagingBufferSize']=0x0,this[_0x771306(0x371)]=null,this['sceneBindGroupLayout']=null,this[_0x771306(0x3a4)]=null,this[_0x771306(0x37c)]=null,this[_0x771306(0x2a1)]=null,this['geometryBindGroup']=null,this[_0x771306(0x3ab)]=null,this['volumeBindGroup']=null,this['transferBindGroup']=null,this[_0x771306(0x188)]=null,this[_0x771306(0x32b)]=null,this[_0x771306(0x18a)]=null,this[_0x771306(0x3e4)]=null,this['overlayLinePipeline']=null,this[_0x771306(0x19d)]=null,this[_0x771306(0x1a6)]=null,this[_0x771306(0x223)]=null,this[_0x771306(0x3f0)]=null,this[_0x771306(0x25a)]=null,this[_0x771306(0x1ce)]=null,this[_0x771306(0x39b)]=null,this['axisResources']=null,this[_0x771306(0x43c)]=!0x1,this[_0x771306(0x1cc)]=0x0,this['height']=0x0;}[_0x3a9ea2(0x24f)](){const _0x7d290d=_0x3a9ea2;if(!this[_0x7d290d(0x3fc)])throw Error(_0x7d290d(0x400));return this[_0x7d290d(0x3fc)];}['getContext'](){const _0x836f68=_0x3a9ea2;if(!this[_0x836f68(0x2b7)])throw Error(_0x836f68(0x232));return this[_0x836f68(0x2b7)];}[_0x3a9ea2(0x2f1)](){const _0x2ef608=_0x3a9ea2;if(!this[_0x2ef608(0x2cd)])throw Error('WebGPU\x20volume\x20format\x20is\x20not\x20initialized.\x20WebGPU\x20体积格式尚未初始化。');return this['format'];}[_0x3a9ea2(0x328)](){const _0x2250a9=_0x3a9ea2;if(!this[_0x2250a9(0x29d)])throw Error(_0x2250a9(0x29e));return this[_0x2250a9(0x29d)];}[_0x3a9ea2(0x1a0)](){const _0x55d704=_0x3a9ea2;if(!this[_0x55d704(0x223)])throw Error(_0x55d704(0x290));return this['attachments'];}[_0x3a9ea2(0x3f1)](){const _0x59e506=_0x3a9ea2;if(!this[_0x59e506(0x3f0)])throw Error('WebGPU\x20volume\x20source\x20must\x20be\x20configured\x20before\x20uploading\x20bricks.\x20上传砖块前必须配置\x20WebGPU\x20体积数据源。');return this[_0x59e506(0x3f0)];}['getTransferResources'](){const _0x33f79=_0x3a9ea2;if(!this[_0x33f79(0x25a)])throw Error(_0x33f79(0x477));return this[_0x33f79(0x25a)];}[_0x3a9ea2(0x283)](){const _0x1c9ebe=_0x3a9ea2;if(!this[_0x1c9ebe(0x1ce)])throw Error(_0x1c9ebe(0x337));return this[_0x1c9ebe(0x1ce)];}['getSliceResources'](){if(!this['sliceResources'])throw Error('WebGPU\x20slice\x20resources\x20are\x20unavailable.\x20WebGPU\x20切面资源不可用。');return this['sliceResources'];}[_0x3a9ea2(0x1bb)](){const _0x399174=_0x3a9ea2;if(!this[_0x399174(0x2da)])throw Error(_0x399174(0x463));return this[_0x399174(0x2da)];}[_0x3a9ea2(0x25b)](){const _0x1ff098=_0x3a9ea2;if(!this[_0x1ff098(0x207)])throw Error('WebGPU\x20scene\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20场景绑定布局不可用。');return this[_0x1ff098(0x207)];}[_0x3a9ea2(0x21c)](){const _0x1c23eb=_0x3a9ea2;if(!this['geometryBindGroupLayout'])throw Error(_0x1c23eb(0x3d7));return this['geometryBindGroupLayout'];}[_0x3a9ea2(0x259)](){const _0x70133a=_0x3a9ea2;if(!this[_0x70133a(0x3a4)])throw Error(_0x70133a(0x30e));return this[_0x70133a(0x3a4)];}[_0x3a9ea2(0x452)](){const _0x3525d7=_0x3a9ea2;if(!this[_0x3525d7(0x37c)])throw Error(_0x3525d7(0x191));return this[_0x3525d7(0x37c)];}[_0x3a9ea2(0x24c)](){const _0x40f5e6=_0x3a9ea2;if(!this[_0x40f5e6(0x2a1)])throw Error('WebGPU\x20slice\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20切面绑定布局不可用。');return this['sliceBindGroupLayout'];}[_0x3a9ea2(0x3a1)](){const _0x3a9cd8=_0x3a9ea2;if(!this['sceneParamsBuffer'])throw Error(_0x3a9cd8(0x1bc));return this[_0x3a9cd8(0x235)];}[_0x3a9ea2(0x1be)](){const _0x28d156=_0x3a9ea2;if(!this[_0x28d156(0x225)])throw Error('WebGPU\x20volume\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20体积参数\x20Buffer\x20不可用。');return this[_0x28d156(0x225)];}};let _0x2dd938=(_0x4b034b,_0x5e8663)=>_0x5e8663==='x'?_0x4b034b[_0x3a9ea2(0x1f2)]:_0x5e8663==='y'?_0x4b034b['yAxis']:_0x4b034b[_0x3a9ea2(0x46c)],_0x4194df=(_0x29f1a8,_0x488da4,_0x1eca93)=>{const _0x4f381b=_0x3a9ea2;if(!Number[_0x4f381b(0x2ba)](_0x1eca93))throw Error('切面位置必须是有限数。');let _0x146d22=_0x2dd938(_0x29f1a8,_0x488da4),_0x4ff7ae=Math[_0x4f381b(0x3e9)](_0x146d22[_0x4f381b(0x239)],_0x146d22['end']),_0x149535=Math['max'](_0x146d22[_0x4f381b(0x239)],_0x146d22[_0x4f381b(0x1e7)]);return Math['min'](_0x149535,Math[_0x4f381b(0x1ac)](_0x4ff7ae,_0x1eca93));},_0x2eb06e=_0x2879e7=>_0x2879e7?{..._0x2879e7}:null,_0x2bd5d7=_0x110b14=>({..._0x110b14}),_0x38e985=_0x3a19a9=>{const _0x4eede7=_0x3a9ea2;for(let _0x303e80 of[_0x3a19a9[_0x4eede7(0x1f2)],_0x3a19a9['yAxis'],_0x3a19a9[_0x4eede7(0x46c)]]){if(!Number[_0x4eede7(0x2ba)](_0x303e80[_0x4eede7(0x239)])||!Number['isFinite'](_0x303e80['end']))throw Error(_0x4eede7(0x436));if(!(Number[_0x4eede7(0x34f)](_0x303e80[_0x4eede7(0x25f)])&&_0x303e80[_0x4eede7(0x25f)]>0x0))throw Error(_0x4eede7(0x458));if(_0x303e80[_0x4eede7(0x25f)]>0x1&&_0x303e80[_0x4eede7(0x239)]===_0x303e80['end'])throw Error('多采样点切面轴的起止值不能相等。');}},_0x1514cb=(_0x413bad,_0x68e075)=>_0x413bad[_0x3a9ea2(0x239)]===_0x413bad[_0x3a9ea2(0x1e7)]?0x0:(_0x68e075-_0x413bad[_0x3a9ea2(0x239)])/(_0x413bad[_0x3a9ea2(0x1e7)]-_0x413bad['start']),_0x246a6d=(_0x41c11a,_0x2f5ca6)=>_0x41c11a[_0x3a9ea2(0x239)]+_0x2f5ca6*(_0x41c11a[_0x3a9ea2(0x1e7)]-_0x41c11a['start']);var _0x144448=class{[_0x3a9ea2(0x1d9)];[_0x3a9ea2(0x3ee)]=new Set();['onLimitReached'];[_0x3a9ea2(0x26f)];['depthMode'];[_0x3a9ea2(0x480)]=0x1;['currentPreview']=null;['slices']=[];[_0x3a9ea2(0x1b7)]=_0x3a9ea2(0x280);['volumeDimFactor'];constructor(_0x1fa7bd,_0x3124b3={}){const _0x1dd3a2=_0x3a9ea2;if(_0x38e985(_0x1fa7bd),this['axes']={'xAxis':{..._0x1fa7bd[_0x1dd3a2(0x1f2)]},'yAxis':{..._0x1fa7bd['yAxis']},'zAxis':{..._0x1fa7bd[_0x1dd3a2(0x46c)]}},this[_0x1dd3a2(0x3d5)]=_0x3124b3[_0x1dd3a2(0x3d5)]??0.25,this[_0x1dd3a2(0x462)]=_0x3124b3['depthMode']??_0x1dd3a2(0x221),this[_0x1dd3a2(0x26f)]=_0x3124b3['maxLockedSlices']??0xc,this[_0x1dd3a2(0x346)]=_0x3124b3[_0x1dd3a2(0x346)],!(this[_0x1dd3a2(0x3d5)]>=0x0&&this[_0x1dd3a2(0x3d5)]<=0x1))throw Error(_0x1dd3a2(0x2a0));if(this[_0x1dd3a2(0x462)]!==_0x1dd3a2(0x221)&&this[_0x1dd3a2(0x462)]!==_0x1dd3a2(0x2c7))throw Error(_0x1dd3a2(0x197));if(!(Number[_0x1dd3a2(0x34f)](this['maxLockedSlices'])&&this[_0x1dd3a2(0x26f)]>0x0))throw Error('maxLockedSlices\x20必须是正整数。');}get[_0x3a9ea2(0x2f6)](){const _0x1f104d=_0x3a9ea2;return _0x2eb06e(this[_0x1f104d(0x253)]);}get['lockedSlices'](){const _0x2629a5=_0x3a9ea2;return this[_0x2629a5(0x3da)][_0x2629a5(0x42f)](_0x2bd5d7);}get[_0x3a9ea2(0x1da)](){const _0x322638=_0x3a9ea2;return this[_0x322638(0x1b7)];}get[_0x3a9ea2(0x20b)](){const _0x27ecce=_0x3a9ea2;return{'preview':this[_0x27ecce(0x2f6)],'lockedSlices':this['lockedSlices'],'toolMode':this[_0x27ecce(0x1b7)],'volumeDimFactor':this[_0x27ecce(0x3d5)]};}[_0x3a9ea2(0x360)](_0x277ef1){const _0x2c0f1e=_0x3a9ea2;return this['listeners'][_0x2c0f1e(0x451)](_0x277ef1),_0x277ef1(this[_0x2c0f1e(0x20b)]),()=>this[_0x2c0f1e(0x3ee)]['delete'](_0x277ef1);}get[_0x3a9ea2(0x348)](){const _0x2c97c1=_0x3a9ea2;return{'xAxis':{...this[_0x2c97c1(0x1d9)][_0x2c97c1(0x1f2)]},'yAxis':{...this['axes'][_0x2c97c1(0x42c)]},'zAxis':{...this[_0x2c97c1(0x1d9)]['zAxis']}};}[_0x3a9ea2(0x2c1)](_0x4fcef0){const _0x102303=_0x3a9ea2;_0x38e985(_0x4fcef0),this[_0x102303(0x1d9)]={'xAxis':{..._0x4fcef0[_0x102303(0x1f2)]},'yAxis':{..._0x4fcef0[_0x102303(0x42c)]},'zAxis':{..._0x4fcef0[_0x102303(0x46c)]}},this[_0x102303(0x253)]&&(this[_0x102303(0x253)]['position']=_0x4194df(this[_0x102303(0x1d9)],this[_0x102303(0x253)]['axis'],this['currentPreview'][_0x102303(0x1d2)])),this['slices']=this['slices'][_0x102303(0x42f)](_0x3f9787=>({..._0x3f9787,'position':_0x4194df(this[_0x102303(0x1d9)],_0x3f9787['axis'],_0x3f9787['position'])})),this[_0x102303(0x312)]();}[_0x3a9ea2(0x2dc)](_0xe118dd){const _0x43ceb2=_0x3a9ea2;this[_0x43ceb2(0x1b7)]!==_0xe118dd&&(this[_0x43ceb2(0x1b7)]=_0xe118dd,(_0xe118dd===null||_0xe118dd!==_0x43ceb2(0x280)&&this[_0x43ceb2(0x253)]?.[_0x43ceb2(0x35f)]!==_0xe118dd)&&(this['currentPreview']=null),this[_0x43ceb2(0x312)]());}['updatePreview'](_0x34bc55,_0x378068){const _0x47e688=_0x3a9ea2;if(this[_0x47e688(0x1b7)]===null||this[_0x47e688(0x1b7)]!=='auto'&&this['mode']!==_0x34bc55)return;let _0x1cae1e=_0x4194df(this[_0x47e688(0x1d9)],_0x34bc55,_0x378068);this[_0x47e688(0x253)]?.[_0x47e688(0x35f)]===_0x34bc55&&this[_0x47e688(0x253)][_0x47e688(0x1d2)]===_0x1cae1e||(this[_0x47e688(0x253)]={'axis':_0x34bc55,'position':_0x1cae1e},this['notify']());}[_0x3a9ea2(0x19b)](){const _0xc6788=_0x3a9ea2;this[_0xc6788(0x253)]&&(this[_0xc6788(0x253)]=null,this[_0xc6788(0x312)]());}[_0x3a9ea2(0x3be)](_0xb8d406=this[_0x3a9ea2(0x462)]){const _0x60417a=_0x3a9ea2;return this[_0x60417a(0x253)]?this[_0x60417a(0x302)](this[_0x60417a(0x253)][_0x60417a(0x35f)],this[_0x60417a(0x253)][_0x60417a(0x1d2)],_0xb8d406):null;}[_0x3a9ea2(0x302)](_0x4cc150,_0x248248,_0xe20e9a=this['depthMode']){const _0x9e5a2c=_0x3a9ea2;if(this['slices']['length']>=this[_0x9e5a2c(0x26f)])return this[_0x9e5a2c(0x346)]?.(this[_0x9e5a2c(0x26f)]),null;let _0x31565d={'id':_0x9e5a2c(0x2bd)+this[_0x9e5a2c(0x480)],'axis':_0x4cc150,'position':_0x4194df(this[_0x9e5a2c(0x1d9)],_0x4cc150,_0x248248),'depthMode':_0xe20e9a,'visible':!0x0};return this['nextId']+=0x1,this[_0x9e5a2c(0x3da)]=[...this['slices'],_0x31565d],this[_0x9e5a2c(0x312)](),_0x2bd5d7(_0x31565d);}['updateLockedSlice'](_0x1eced3,_0x204073){const _0x2867b7=_0x3a9ea2;let _0x2a4974=this[_0x2867b7(0x3da)][_0x2867b7(0x22c)](_0x4790e0=>_0x4790e0['id']===_0x1eced3);if(_0x2a4974<0x0)return;let _0x576559=this[_0x2867b7(0x3da)][_0x2a4974],_0x2f96fc=_0x4194df(this['axes'],_0x576559[_0x2867b7(0x35f)],_0x204073);_0x2f96fc!==_0x576559['position']&&(this[_0x2867b7(0x3da)]=this['slices']['map'](_0x230ae4=>_0x230ae4['id']===_0x1eced3?{..._0x230ae4,'position':_0x2f96fc}:_0x230ae4),this[_0x2867b7(0x312)]());}[_0x3a9ea2(0x3cc)](_0x1214ba){const _0x583f0d=_0x3a9ea2;let _0x29542d=this[_0x583f0d(0x3da)][_0x583f0d(0x340)](_0x325a69=>_0x325a69['id']!==_0x1214ba);_0x29542d[_0x583f0d(0x2e8)]!==this[_0x583f0d(0x3da)][_0x583f0d(0x2e8)]&&(this[_0x583f0d(0x3da)]=_0x29542d,this['notify']());}[_0x3a9ea2(0x3a0)](){const _0x561d3e=_0x3a9ea2;this['slices']['length']!==0x0&&(this[_0x561d3e(0x3da)]=[],this['notify']());}[_0x3a9ea2(0x312)](){let _0x1fc6d4=this['snapshot'];for(let _0x9aa6fc of this['listeners'])_0x9aa6fc(_0x1fc6d4);}};let _0x3d5198=_0x4b5cc1=>_0x4b5cc1==='x'?[[0x0,0x0,0x0],[0x1,0x0,0x0]]:_0x4b5cc1==='y'?[[0x0,0x0,0x0],[0x0,0x1,0x0]]:[[0x0,0x0,0x0],[0x0,0x0,0x1]],_0x2cdaeb=(_0x40ee10,_0x11786e)=>{const _0x53bcae=_0x3a9ea2;let _0x5bce1c=_0x2f82db(_0x11786e[_0x53bcae(0x222)],_0x11786e['modelMatrix']),[_0x2bfb74,_0x3fb385]=_0x3d5198(_0x40ee10),_0x42bcb7=_0x296522(_0x5bce1c,_0x2bfb74,_0x11786e[_0x53bcae(0x39a)],_0x11786e['viewportHeight']),_0x53532a=_0x296522(_0x5bce1c,_0x3fb385,_0x11786e[_0x53bcae(0x39a)],_0x11786e['viewportHeight']);return!_0x42bcb7||!_0x53532a?null:{'axis':_0x40ee10,'startX':_0x42bcb7[0x0],'startY':_0x42bcb7[0x1],'endX':_0x53532a[0x0],'endY':_0x53532a[0x1]};},_0x5d27b8=(_0x343e3d,_0x52e159,_0x5ccbf3)=>{const _0x2433ba=_0x3a9ea2;let _0x3f79b0=_0x343e3d[_0x2433ba(0x179)]-_0x343e3d[_0x2433ba(0x300)],_0x27af18=_0x343e3d[_0x2433ba(0x358)]-_0x343e3d[_0x2433ba(0x2f9)],_0x5b1640=_0x3f79b0*_0x3f79b0+_0x27af18*_0x27af18,_0x4bad36=_0x5b1640===0x0?0x0:((_0x52e159-_0x343e3d['startX'])*_0x3f79b0+(_0x5ccbf3-_0x343e3d[_0x2433ba(0x2f9)])*_0x27af18)/_0x5b1640,_0x16b370=Math['min'](0x1,Math['max'](0x0,_0x4bad36)),_0x4e386a=_0x343e3d['startX']+_0x16b370*_0x3f79b0,_0x53d23a=_0x343e3d['startY']+_0x16b370*_0x27af18;return{'axis':_0x343e3d['axis'],'distance':Math['hypot'](_0x52e159-_0x4e386a,_0x5ccbf3-_0x53d23a),'normalizedPosition':_0x16b370};},_0x3db857=(_0x21405f,_0x719911,_0x2d6957)=>{const _0x47358b=_0x3a9ea2;let _0x298987=_0x719911['getBoundingClientRect']();return[_0x298987[_0x47358b(0x1cc)]===0x0?0x0:(_0x21405f[_0x47358b(0x2c8)]-_0x298987[_0x47358b(0x2db)])*_0x2d6957[_0x47358b(0x39a)]/_0x298987['width'],_0x298987[_0x47358b(0x22a)]===0x0?0x0:(_0x21405f[_0x47358b(0x470)]-_0x298987['top'])*_0x2d6957['viewportHeight']/_0x298987[_0x47358b(0x22a)]];},_0xa6fc45=(_0x1aedec,_0x358370,_0x4e1a02)=>{const _0x3867b5=_0x3a9ea2;let _0x89c729=_0x1aedec[_0x3867b5(0x348)];return _0x246a6d(_0x358370==='x'?_0x89c729['xAxis']:_0x358370==='y'?_0x89c729['yAxis']:_0x89c729['zAxis'],_0x4e1a02);};var _0x1ec6f2=class{[_0x3a9ea2(0x3f9)];['state'];[_0x3a9ea2(0x196)];['hitTolerance'];[_0x3a9ea2(0x33d)];['onInteractionStart'];['onInteractionEnd'];[_0x3a9ea2(0x32a)]=null;[_0x3a9ea2(0x3e8)]=null;[_0x3a9ea2(0x473)]=!0x1;constructor(_0x1e52b8,_0x161185,_0x445da8,_0x4c6ec9={}){const _0x54160c=_0x3a9ea2;this[_0x54160c(0x3f9)]=_0x1e52b8,this['state']=_0x161185,this[_0x54160c(0x196)]=_0x445da8,this['hitTolerance']=_0x4c6ec9[_0x54160c(0x2d2)]??0xa,this[_0x54160c(0x33d)]=_0x4c6ec9['axisHysteresisPixels']??0x4,this[_0x54160c(0x275)]=_0x4c6ec9['onInteractionStart'],this['onInteractionEnd']=_0x4c6ec9[_0x54160c(0x45d)];}['initialize'](){const _0x184c4d=_0x3a9ea2;this[_0x184c4d(0x473)]||(this[_0x184c4d(0x473)]=!0x0,this[_0x184c4d(0x3f9)][_0x184c4d(0x265)](_0x184c4d(0x378),this[_0x184c4d(0x287)],!0x0),this['element'][_0x184c4d(0x265)](_0x184c4d(0x365),this[_0x184c4d(0x266)],!0x0),this[_0x184c4d(0x3f9)]['addEventListener'](_0x184c4d(0x2e1),this['handlePointerLeave'],!0x0),window[_0x184c4d(0x265)](_0x184c4d(0x365),this[_0x184c4d(0x2ec)],!0x0),window['addEventListener'](_0x184c4d(0x2be),this[_0x184c4d(0x42a)],!0x0),window['addEventListener'](_0x184c4d(0x3d6),this[_0x184c4d(0x42a)],!0x0));}[_0x3a9ea2(0x26e)](_0x35c81e,_0x49d596){const _0x764136=_0x3a9ea2;let _0x5e38e7=this[_0x764136(0x465)][_0x764136(0x211)]['find'](_0x51321a=>_0x51321a['id']===_0x35c81e);_0x5e38e7&&(this[_0x764136(0x32a)]={'kind':_0x764136(0x22b),'axis':_0x5e38e7[_0x764136(0x35f)],'pointerId':_0x49d596[_0x764136(0x36c)],'sliceId':_0x35c81e,'startX':_0x49d596['clientX'],'startY':_0x49d596[_0x764136(0x470)],'moved':!0x1},this['onInteractionStart']?.(),_0x49d596[_0x764136(0x1f5)](),_0x49d596[_0x764136(0x316)]());}[_0x3a9ea2(0x421)](){const _0x48f5e0=_0x3a9ea2;this[_0x48f5e0(0x473)]&&(this['initialized']=!0x1,this['element'][_0x48f5e0(0x347)](_0x48f5e0(0x378),this['handlePointerDown'],!0x0),this[_0x48f5e0(0x3f9)][_0x48f5e0(0x347)](_0x48f5e0(0x365),this['handlePointerMove'],!0x0),this[_0x48f5e0(0x3f9)][_0x48f5e0(0x347)]('pointerleave',this['handlePointerLeave'],!0x0),window[_0x48f5e0(0x347)](_0x48f5e0(0x365),this[_0x48f5e0(0x2ec)],!0x0),window[_0x48f5e0(0x347)](_0x48f5e0(0x2be),this[_0x48f5e0(0x42a)],!0x0),window[_0x48f5e0(0x347)](_0x48f5e0(0x3d6),this[_0x48f5e0(0x42a)],!0x0),this[_0x48f5e0(0x32a)]&&this[_0x48f5e0(0x45d)]?.(),this[_0x48f5e0(0x32a)]=null,this[_0x48f5e0(0x3e8)]=null,this[_0x48f5e0(0x465)][_0x48f5e0(0x19b)]());}[_0x3a9ea2(0x2ce)](_0x1f1f47,_0x48e3ce){const _0x1fd6b5=_0x3a9ea2;let _0x303f1a=this[_0x1fd6b5(0x196)]();if(!_0x303f1a)return null;let [_0x3dc0d6,_0x361046]=_0x3db857(_0x1f1f47,this['element'],_0x303f1a),_0x533a12=this['state'][_0x1fd6b5(0x1da)];if(_0x533a12===null)return null;let _0x49d501=(_0x48e3ce?[_0x48e3ce]:_0x533a12===_0x1fd6b5(0x280)?['x','y','z']:[_0x533a12])[_0x1fd6b5(0x42f)](_0x3c9bcc=>_0x2cdaeb(_0x3c9bcc,_0x303f1a))[_0x1fd6b5(0x340)](_0x5a1918=>_0x5a1918!==null)[_0x1fd6b5(0x42f)](_0x11eff9=>_0x5d27b8(_0x11eff9,_0x3dc0d6,_0x361046));if(_0x49d501['length']===0x0)return null;_0x49d501['sort']((_0x9033ba,_0x7e7dfd)=>_0x9033ba[_0x1fd6b5(0x1e1)]-_0x7e7dfd[_0x1fd6b5(0x1e1)]);let _0x46fc33=_0x49d501[0x0];if(!_0x48e3ce&&this[_0x1fd6b5(0x3e8)]){let _0x4846f4=_0x49d501[_0x1fd6b5(0x1e8)](_0x56babd=>_0x56babd[_0x1fd6b5(0x35f)]===this['previousAxis']);_0x4846f4&&_0x4846f4['distance']<=_0x46fc33[_0x1fd6b5(0x1e1)]+this[_0x1fd6b5(0x33d)]&&(_0x46fc33=_0x4846f4);}return!_0x48e3ce&&_0x46fc33[_0x1fd6b5(0x1e1)]>this[_0x1fd6b5(0x354)]?null:_0x46fc33;}[_0x3a9ea2(0x35a)](_0x1e3098,_0x4f31cf){const _0x2d1bc0=_0x3a9ea2;let _0x2d39ed=_0xa6fc45(this[_0x2d1bc0(0x465)],_0x1e3098['axis'],_0x1e3098[_0x2d1bc0(0x2dd)]);_0x4f31cf?this['state'][_0x2d1bc0(0x23f)](_0x4f31cf,_0x2d39ed):this[_0x2d1bc0(0x465)][_0x2d1bc0(0x37f)](_0x1e3098[_0x2d1bc0(0x35f)],_0x2d39ed),this['previousAxis']=_0x1e3098[_0x2d1bc0(0x35f)];}[_0x3a9ea2(0x287)]=_0x592121=>{const _0x2f7fe7=_0x3a9ea2;if(_0x592121['button']!==0x0||this['activePointer'])return;let _0x53caa0=this[_0x2f7fe7(0x2ce)](_0x592121);_0x53caa0&&(this['applyHit'](_0x53caa0),this[_0x2f7fe7(0x32a)]={'kind':_0x2f7fe7(0x2f6),'axis':_0x53caa0['axis'],'pointerId':_0x592121[_0x2f7fe7(0x36c)],'startX':_0x592121['clientX'],'startY':_0x592121[_0x2f7fe7(0x470)],'moved':!0x1},this[_0x2f7fe7(0x275)]?.(),this[_0x2f7fe7(0x3f9)][_0x2f7fe7(0x3dc)]?.(_0x592121[_0x2f7fe7(0x36c)]),_0x592121[_0x2f7fe7(0x1f5)](),_0x592121[_0x2f7fe7(0x316)]());};[_0x3a9ea2(0x266)]=_0x2b2400=>{const _0x51666c=_0x3a9ea2;if(this[_0x51666c(0x32a)])return;let _0x288460=this[_0x51666c(0x2ce)](_0x2b2400);if(!_0x288460){this['previousAxis']=null,this[_0x51666c(0x465)][_0x51666c(0x19b)]();return;}this[_0x51666c(0x35a)](_0x288460);};[_0x3a9ea2(0x2ec)]=_0x206ca2=>{const _0x47fd82=_0x3a9ea2;let _0x36fd4f=this[_0x47fd82(0x32a)];if(!_0x36fd4f||_0x36fd4f[_0x47fd82(0x36c)]!==_0x206ca2[_0x47fd82(0x36c)])return;let _0x1064ac=this[_0x47fd82(0x2ce)](_0x206ca2,_0x36fd4f[_0x47fd82(0x35f)]);_0x1064ac&&(Math[_0x47fd82(0x1d3)](_0x206ca2[_0x47fd82(0x2c8)]-_0x36fd4f[_0x47fd82(0x300)],_0x206ca2[_0x47fd82(0x470)]-_0x36fd4f['startY'])>0x4&&(_0x36fd4f['moved']=!0x0),this[_0x47fd82(0x35a)](_0x1064ac,_0x36fd4f[_0x47fd82(0x2ed)]),_0x206ca2[_0x47fd82(0x1f5)](),_0x206ca2[_0x47fd82(0x316)]());};[_0x3a9ea2(0x42a)]=_0x396a9f=>{const _0x1a32fa=_0x3a9ea2;let _0x5a3c7f=this[_0x1a32fa(0x32a)];!_0x5a3c7f||_0x5a3c7f[_0x1a32fa(0x36c)]!==_0x396a9f[_0x1a32fa(0x36c)]||(_0x5a3c7f[_0x1a32fa(0x33a)]===_0x1a32fa(0x2f6)&&!_0x5a3c7f['moved']&&this[_0x1a32fa(0x465)][_0x1a32fa(0x3be)](),this[_0x1a32fa(0x3f9)][_0x1a32fa(0x46e)]?.(_0x396a9f[_0x1a32fa(0x36c)])&&this[_0x1a32fa(0x3f9)][_0x1a32fa(0x376)](_0x396a9f[_0x1a32fa(0x36c)]),this[_0x1a32fa(0x32a)]=null,this[_0x1a32fa(0x45d)]?.(),_0x396a9f[_0x1a32fa(0x1f5)](),_0x396a9f[_0x1a32fa(0x316)]());};['handlePointerLeave']=()=>{const _0x1c269c=_0x3a9ea2;this[_0x1c269c(0x32a)]||this['state']['clearPreview']();};};let _0x1a1d51=_0x34ccc6=>_0x34ccc6[_0x3a9ea2(0x269)](),_0x5ad7e5=(_0x40ea96,_0x4e95c7)=>_0x1a1d51(_0x40ea96)+'\x20'+Number(_0x4e95c7[_0x3a9ea2(0x3e5)](0x4)),_0x50ddfd=(_0x35afec,_0x56e463)=>{const _0x3f648c=_0x3a9ea2;let _0x4b4c5d=_0x35afec[_0x3f648c(0x348)];return _0x56e463==='x'?_0x4b4c5d[_0x3f648c(0x1f2)]:_0x56e463==='y'?_0x4b4c5d[_0x3f648c(0x42c)]:_0x4b4c5d[_0x3f648c(0x46c)];},_0x35a195=(_0x5bb55b,_0x13d63d)=>{const _0x503e29=_0x3a9ea2;let _0x9bcba5=_0x1514cb(_0x50ddfd(_0x5bb55b,_0x13d63d[_0x503e29(0x35f)]),_0x13d63d[_0x503e29(0x1d2)]);return _0x13d63d[_0x503e29(0x35f)]==='x'?[_0x9bcba5,0x0,0x0]:_0x13d63d['axis']==='y'?[0x0,_0x9bcba5,0x0]:[0x0,0x0,_0x9bcba5];},_0x5f0dfe=_0x447299=>{const _0x38b6b6=_0x3a9ea2;_0x447299[_0x38b6b6(0x1bf)][_0x38b6b6(0x1d2)]=_0x38b6b6(0x23a),_0x447299['style']['zIndex']='1',_0x447299['style']['display']='flex',_0x447299[_0x38b6b6(0x1bf)][_0x38b6b6(0x1e6)]=_0x38b6b6(0x31c),_0x447299[_0x38b6b6(0x1bf)][_0x38b6b6(0x35c)]='4px',_0x447299[_0x38b6b6(0x1bf)][_0x38b6b6(0x32d)]='3px\x206px',_0x447299[_0x38b6b6(0x1bf)][_0x38b6b6(0x285)]='1px\x20solid\x20rgb(255\x20255\x20255\x20/\x2065%)',_0x447299[_0x38b6b6(0x1bf)][_0x38b6b6(0x1de)]=_0x38b6b6(0x43e),_0x447299[_0x38b6b6(0x1bf)][_0x38b6b6(0x224)]=_0x38b6b6(0x303),_0x447299['style'][_0x38b6b6(0x195)]='rgb(17\x2024\x2039\x20/\x2082%)',_0x447299[_0x38b6b6(0x1bf)][_0x38b6b6(0x484)]='12px/1.2\x20sans-serif',_0x447299[_0x38b6b6(0x1bf)][_0x38b6b6(0x246)]=_0x38b6b6(0x44c),_0x447299['style'][_0x38b6b6(0x18e)]=_0x38b6b6(0x217),_0x447299[_0x38b6b6(0x1bf)][_0x38b6b6(0x3ed)]='none',_0x447299[_0x38b6b6(0x1bf)]['touchAction']='none';},_0x29a124=()=>{const _0x3a04cb=_0x3a9ea2;let _0x3185b6=document[_0x3a04cb(0x237)](_0x3a04cb(0x26b));return _0x3185b6[_0x3a04cb(0x2f5)]=_0x3a04cb(0x26b),_0x3185b6[_0x3a04cb(0x3c4)]='×',_0x3185b6[_0x3a04cb(0x367)](_0x3a04cb(0x2bf),_0x3a04cb(0x2eb)),_0x3185b6['style']['padding']=_0x3a04cb(0x1bd),_0x3185b6['style']['border']='0',_0x3185b6['style']['color']=_0x3a04cb(0x423),_0x3185b6['style'][_0x3a04cb(0x195)]=_0x3a04cb(0x3b2),_0x3185b6[_0x3a04cb(0x1bf)][_0x3a04cb(0x322)]=_0x3a04cb(0x2a9),_0x3185b6;};var _0x37401f=class{[_0x3a9ea2(0x314)];[_0x3a9ea2(0x465)];[_0x3a9ea2(0x196)];[_0x3a9ea2(0x1e9)];[_0x3a9ea2(0x20d)];['markers']=new Map();[_0x3a9ea2(0x219)];['unsubscribe'];[_0x3a9ea2(0x434)]=null;constructor(_0x4bedbd,_0x225b44,_0x17af80,_0x3c71a4={}){const _0x1d2509=_0x3a9ea2;this[_0x1d2509(0x314)]=_0x4bedbd,this['state']=_0x225b44,this[_0x1d2509(0x196)]=_0x17af80,this[_0x1d2509(0x1e9)]=_0x3c71a4[_0x1d2509(0x1e9)],this[_0x1d2509(0x20d)]=_0x3c71a4[_0x1d2509(0x20d)]??_0x5ad7e5,this[_0x1d2509(0x219)]=_0x4bedbd[_0x1d2509(0x1bf)][_0x1d2509(0x1d2)],getComputedStyle(_0x4bedbd)[_0x1d2509(0x1d2)]==='static'&&(_0x4bedbd[_0x1d2509(0x1bf)]['position']=_0x1d2509(0x445)),this[_0x1d2509(0x279)]=_0x225b44[_0x1d2509(0x360)](()=>this[_0x1d2509(0x3a6)]());}[_0x3a9ea2(0x3a6)](){const _0x37d28d=_0x3a9ea2;let _0xa85473=this[_0x37d28d(0x465)][_0x37d28d(0x20b)];this['syncPreview'](_0xa85473[_0x37d28d(0x2f6)]),this[_0x37d28d(0x274)](_0xa85473[_0x37d28d(0x211)]);let _0x283944=this[_0x37d28d(0x196)]();if(!_0x283944){this[_0x37d28d(0x21d)]();return;}_0xa85473[_0x37d28d(0x2f6)]&&this['previewMarker']&&this[_0x37d28d(0x230)](this[_0x37d28d(0x434)],_0xa85473[_0x37d28d(0x2f6)],_0x283944);for(let _0x3f2090 of _0xa85473[_0x37d28d(0x211)]){let _0x1a82fb=this[_0x37d28d(0x2cc)][_0x37d28d(0x2a8)](_0x3f2090['id']);_0x1a82fb&&this[_0x37d28d(0x230)](_0x1a82fb,_0x3f2090,_0x283944);}}['destroy'](){const _0x12c302=_0x3a9ea2;this[_0x12c302(0x279)](),this[_0x12c302(0x434)]?.[_0x12c302(0x2b9)](),this[_0x12c302(0x434)]=null;for(let _0xc0a979 of this[_0x12c302(0x2cc)]['values']())_0xc0a979[_0x12c302(0x2b9)]();this[_0x12c302(0x2cc)][_0x12c302(0x33b)](),this[_0x12c302(0x314)][_0x12c302(0x1bf)]['position']=this[_0x12c302(0x219)];}[_0x3a9ea2(0x3e1)](_0x7efac1){const _0x38f5e6=_0x3a9ea2;if(!_0x7efac1){this['previewMarker']?.[_0x38f5e6(0x2b9)](),this[_0x38f5e6(0x434)]=null;return;}this[_0x38f5e6(0x434)]||(this[_0x38f5e6(0x434)]=document[_0x38f5e6(0x237)](_0x38f5e6(0x1c6)),_0x5f0dfe(this[_0x38f5e6(0x434)]),this[_0x38f5e6(0x434)][_0x38f5e6(0x1bf)][_0x38f5e6(0x1f7)]='none',this['previewMarker'][_0x38f5e6(0x1bf)][_0x38f5e6(0x23e)]=_0x38f5e6(0x1fc),this[_0x38f5e6(0x314)]['append'](this[_0x38f5e6(0x434)])),this[_0x38f5e6(0x434)]['textContent']=this[_0x38f5e6(0x20d)](_0x7efac1[_0x38f5e6(0x35f)],_0x7efac1['position']);}[_0x3a9ea2(0x274)](_0x485f71){const _0x3f8deb=_0x3a9ea2;let _0x4ef1e6=new Set(_0x485f71['map'](_0x28c3d6=>_0x28c3d6['id']));for(let [_0x2742b8,_0x265bb5]of this['markers'])_0x4ef1e6[_0x3f8deb(0x3cf)](_0x2742b8)||(_0x265bb5['remove'](),this[_0x3f8deb(0x2cc)]['delete'](_0x2742b8));for(let _0xa4d516 of _0x485f71){let _0x266746=this['markers']['get'](_0xa4d516['id']);_0x266746||(_0x266746=this[_0x3f8deb(0x36a)](_0xa4d516['id']),this[_0x3f8deb(0x2cc)][_0x3f8deb(0x46d)](_0xa4d516['id'],_0x266746),this['container'][_0x3f8deb(0x200)](_0x266746));let _0x232be4=_0x266746[_0x3f8deb(0x250)];_0x232be4&&(_0x232be4[_0x3f8deb(0x3c4)]=this[_0x3f8deb(0x20d)](_0xa4d516['axis'],_0xa4d516[_0x3f8deb(0x1d2)]));}}[_0x3a9ea2(0x36a)](_0xc9f18d){const _0x4d6693=_0x3a9ea2;let _0x4847eb=document[_0x4d6693(0x237)](_0x4d6693(0x1c6));_0x5f0dfe(_0x4847eb),_0x4847eb[_0x4d6693(0x1bf)][_0x4d6693(0x322)]=_0x4d6693(0x468),_0x4847eb['append'](document[_0x4d6693(0x3e2)](''));let _0x3c2c6f=_0x29a124();return _0x3c2c6f['addEventListener']('pointerdown',_0x2721ae=>_0x2721ae[_0x4d6693(0x316)]()),_0x3c2c6f[_0x4d6693(0x265)]('click',_0x2fce97=>{const _0x40802f=_0x4d6693;_0x2fce97[_0x40802f(0x316)](),this[_0x40802f(0x465)][_0x40802f(0x3cc)](_0xc9f18d);}),_0x4847eb[_0x4d6693(0x265)]('pointerdown',_0x2f9b18=>this['interactionController']?.[_0x4d6693(0x26e)](_0xc9f18d,_0x2f9b18)),_0x4847eb['append'](_0x3c2c6f),_0x4847eb;}[_0x3a9ea2(0x230)](_0xe13e55,_0x5e5c6a,_0x2a7961){const _0x33a4fb=_0x3a9ea2;let _0xf40cc7=_0x296522(_0x2f82db(_0x2a7961['viewProjectionMatrix'],_0x2a7961[_0x33a4fb(0x1e0)]),_0x35a195(this[_0x33a4fb(0x465)],_0x5e5c6a),_0x2a7961['viewportWidth'],_0x2a7961[_0x33a4fb(0x372)]);if(!_0xf40cc7||_0xf40cc7[0x2]<0x0||_0xf40cc7[0x2]>0x1){_0xe13e55['style'][_0x33a4fb(0x398)]=_0x33a4fb(0x3c2);return;}_0xe13e55[_0x33a4fb(0x1bf)][_0x33a4fb(0x398)]='flex',_0xe13e55[_0x33a4fb(0x1bf)][_0x33a4fb(0x2db)]=_0xf40cc7[0x0]+'px',_0xe13e55[_0x33a4fb(0x1bf)]['top']=_0xf40cc7[0x1]+'px';}['hideAllMarkers'](){const _0x5b0589=_0x3a9ea2;this[_0x5b0589(0x434)]&&(this[_0x5b0589(0x434)][_0x5b0589(0x1bf)][_0x5b0589(0x398)]=_0x5b0589(0x3c2));for(let _0x16ba1d of this[_0x5b0589(0x2cc)][_0x5b0589(0x1a1)]())_0x16ba1d[_0x5b0589(0x1bf)][_0x5b0589(0x398)]=_0x5b0589(0x3c2);}};let _0xb849a2=(_0x9bb60f,_0x15a8e0)=>Math['min'](_0x15a8e0-0x1,Math['max'](0x0,_0x9bb60f)),_0x2b3504=(_0x426b7d,_0x293f51,_0x5ecdcb,_0x3441e0)=>{const _0x1ba462=_0x3a9ea2;_0x466b16(_0x426b7d,_0x3441e0,_0x5ecdcb['readRange']);let _0x2b859b=_0x293f51['width']+_0x293f51[_0x1ba462(0x3ca)]*0x2,_0x2d2639=_0x293f51[_0x1ba462(0x22a)]+_0x293f51[_0x1ba462(0x3ca)]*0x2,_0x2a8bdd=_0x293f51['depth']+_0x293f51[_0x1ba462(0x3ca)]*0x2,_0x447886=new Float32Array(_0x2b859b*_0x2d2639*_0x2a8bdd);for(let _0x26a0a=0x0;_0x26a0a<_0x2a8bdd;_0x26a0a+=0x1){let _0x100935=_0xb849a2(_0x5ecdcb[_0x1ba462(0x1af)]['sourceYStart']+_0x26a0a-_0x293f51[_0x1ba462(0x3ca)],_0x426b7d['zAxis'][_0x1ba462(0x25f)])-_0x3441e0['range']['sourceYStart'];for(let _0xbacc68=0x0;_0xbacc68<_0x2d2639;_0xbacc68+=0x1){let _0x44153c=_0xb849a2(_0x5ecdcb[_0x1ba462(0x1af)][_0x1ba462(0x1dc)]+_0xbacc68-_0x293f51[_0x1ba462(0x3ca)],_0x426b7d[_0x1ba462(0x42c)][_0x1ba462(0x25f)])-_0x3441e0[_0x1ba462(0x17e)]['levelStart'];for(let _0x1cf973=0x0;_0x1cf973<_0x2b859b;_0x1cf973+=0x1){let _0x3d2813=_0xb849a2(_0x5ecdcb['coreRange'][_0x1ba462(0x3b3)]+_0x1cf973-_0x293f51['halo'],_0x426b7d['xAxis'][_0x1ba462(0x25f)])-_0x3441e0[_0x1ba462(0x17e)]['xStart'];_0x447886[(_0x26a0a*_0x2d2639+_0xbacc68)*_0x2b859b+_0x1cf973]=_0x3441e0[_0x1ba462(0x1a1)][(_0x100935*_0x3441e0[_0x1ba462(0x22a)]+_0x44153c)*_0x3441e0['width']+_0x3d2813];}}}return _0x447886;},_0x3ffc40=_0x1ef90d=>{const _0x2b18c7=_0x3a9ea2;if(_0x1ef90d[_0x2b18c7(0x2e8)]===0x0)throw Error(_0x2b18c7(0x24b));return _0x1ef90d[_0x2b18c7(0x42f)]((_0x11a4a0,_0x97f148)=>{const _0x33795d=_0x2b18c7;if(Number[_0x33795d(0x2c9)](_0x11a4a0[_0x33795d(0x3e9)])||Number['isNaN'](_0x11a4a0[_0x33795d(0x1ac)]))throw TypeError('第'+(_0x97f148+0x1)+'个色标范围不能是NaN');if(_0x11a4a0['min']>=_0x11a4a0[_0x33795d(0x1ac)])throw Error('第'+(_0x97f148+0x1)+_0x33795d(0x21f));return{'min':_0x11a4a0['min'],'max':_0x11a4a0['max'],'color':_0x338e10(_0x11a4a0[_0x33795d(0x224)])};})['sort']((_0x4752b8,_0x2321cd)=>_0x4752b8[_0x2b18c7(0x3e9)]-_0x2321cd[_0x2b18c7(0x3e9)]);},_0x338e10=_0x361646=>{const _0x3be7d1=_0x3a9ea2;let _0x384067=_0x361646[_0x3be7d1(0x2ad)]()['toLowerCase']();if(_0x384067['startsWith']('#'))return _0x3c2869(_0x384067);if(_0x384067[_0x3be7d1(0x194)](_0x3be7d1(0x192)))return _0x25c7da(_0x384067,!0x0);if(_0x384067[_0x3be7d1(0x194)](_0x3be7d1(0x3d2)))return _0x25c7da(_0x384067,!0x1);throw Error('不支持的颜色格式:\x20'+_0x361646);},_0x3c2869=_0x41164b=>{const _0x55c566=_0x3a9ea2;if(_0x41164b[_0x55c566(0x2e8)]===0x4)return _0x5ddfb8(Number['parseInt'](''+_0x41164b[0x1]+_0x41164b[0x1],0x10),Number['parseInt'](''+_0x41164b[0x2]+_0x41164b[0x2],0x10),Number[_0x55c566(0x341)](''+_0x41164b[0x3]+_0x41164b[0x3],0x10),0x1);if(_0x41164b[_0x55c566(0x2e8)]===0x7)return _0x5ddfb8(Number[_0x55c566(0x341)](_0x41164b[_0x55c566(0x212)](0x1,0x3),0x10),Number['parseInt'](_0x41164b[_0x55c566(0x212)](0x3,0x5),0x10),Number[_0x55c566(0x341)](_0x41164b[_0x55c566(0x212)](0x5,0x7),0x10),0x1);throw Error(_0x55c566(0x1ea)+_0x41164b);},_0x25c7da=(_0x296321,_0x4a2406)=>{const _0x45681d=_0x3a9ea2;let _0x12c684=_0x296321[_0x45681d(0x261)](/^rgba?\(([^)]+)\)$/);if(!_0x12c684)throw Error(_0x45681d(0x440)+_0x296321);let _0x596d5e=_0x12c684[0x1]['split'](',')[_0x45681d(0x42f)](_0x134668=>_0x134668['trim']()),_0x25e72e=_0x4a2406?0x4:0x3;if(_0x596d5e['length']!==_0x25e72e)throw Error(_0x45681d(0x420)+_0x296321);return _0x5ddfb8(Number(_0x596d5e[0x0]),Number(_0x596d5e[0x1]),Number(_0x596d5e[0x2]),_0x4a2406?Number(_0x596d5e[0x3]):0x1);},_0x5ddfb8=(_0x72119,_0x44f1eb,_0x4d2de1,_0x202741)=>{const _0x3399f0=_0x3a9ea2;if(!_0x10f8d3(_0x72119)||!_0x10f8d3(_0x44f1eb)||!_0x10f8d3(_0x4d2de1))throw Error(_0x3399f0(0x46b));if(!Number[_0x3399f0(0x2ba)](_0x202741)||_0x202741<0x0||_0x202741>0x1)throw Error(_0x3399f0(0x2c5));return[_0x72119/0xff,_0x44f1eb/0xff,_0x4d2de1/0xff,_0x202741];},_0x10f8d3=_0x1c68ab=>Number[_0x3a9ea2(0x2ba)](_0x1c68ab)&&_0x1c68ab>=0x0&&_0x1c68ab<=0xff,_0x31518f=_0x4264bf=>{const _0x29ae80=_0x3a9ea2;if(_0x4264bf[_0x29ae80(0x2e8)]===0x0)throw Error('Volume\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积透明度节点不能为空。');let _0x1fb2b9=-0x1/0x0;for(let _0x1cad9a of _0x4264bf){if(!Number[_0x29ae80(0x2ba)](_0x1cad9a[_0x29ae80(0x431)])||_0x1cad9a[_0x29ae80(0x431)]<=_0x1fb2b9)throw Error(_0x29ae80(0x42d));if(!Number['isFinite'](_0x1cad9a[_0x29ae80(0x23e)])||_0x1cad9a[_0x29ae80(0x23e)]<0x0||_0x1cad9a['opacity']>0x1)throw Error(_0x29ae80(0x424));_0x1fb2b9=_0x1cad9a[_0x29ae80(0x431)];}},_0x308d1a=(_0x5ad43e,_0x33d5de)=>{const _0x244575=_0x3a9ea2;if(_0x5ad43e<=_0x33d5de[0x0])return[0x0,0x0,0x0];for(let _0x2a636c=0x1;_0x2a636c<_0x33d5de[_0x244575(0x2e8)];_0x2a636c+=0x1)if(_0x5ad43e<=_0x33d5de[_0x2a636c]){let _0x3781ef=_0x33d5de[_0x2a636c]-_0x33d5de[_0x2a636c-0x1];return[_0x2a636c-0x1,_0x2a636c,_0x3781ef===0x0?0x0:Math[_0x244575(0x3e9)](0x1,Math[_0x244575(0x1ac)](0x0,(_0x5ad43e-_0x33d5de[_0x2a636c-0x1])/_0x3781ef))];}let _0xf9a63d=_0x33d5de[_0x244575(0x2e8)]-0x1;return[_0xf9a63d,_0xf9a63d,0x0];},_0x22be8e=(_0x51e29e,_0x25ae29)=>{const _0xb1765a=_0x3a9ea2;_0x31518f(_0x25ae29);let _0x121a92=_0x3ffc40([..._0x51e29e]);return{'colorStops':_0x121a92[_0xb1765a(0x264)]((_0x59aa96,_0x27d35f)=>{const _0x3b5068=_0xb1765a;let _0x4bf3f4=_0x121a92[Math['min'](_0x27d35f+0x1,_0x121a92['length']-0x1)][_0x3b5068(0x224)];return[{'value':_0x59aa96[_0x3b5068(0x3e9)],'color':_0x59aa96['color']},{'value':_0x59aa96[_0x3b5068(0x1ac)],'color':_0x4bf3f4}];}),'opacityStops':_0x25ae29[_0xb1765a(0x42f)](_0x93a7c5=>({..._0x93a7c5}))};},_0x43be91=(_0x4a7643,_0xd19a86,_0x10c367,_0x1f12ce)=>{const _0x49b23f=_0x3a9ea2;if(!Number['isFinite'](_0x4a7643))return[0x0,0x0,0x0,0x0];let [_0x43f5de,_0x3835c9,_0x230688]=_0x308d1a(_0x4a7643,_0xd19a86['map'](_0x42a0f4=>_0x42a0f4['value'])),_0x211883=_0xd19a86[_0x43f5de],_0x5811a8=_0xd19a86[_0x3835c9],_0x53a8d5=_0x1f12ce===_0x49b23f(0x301)?0x0:_0x230688;return[_0x211883['color'][0x0]+(_0x5811a8[_0x49b23f(0x224)][0x0]-_0x211883['color'][0x0])*_0x53a8d5,_0x211883[_0x49b23f(0x224)][0x1]+(_0x5811a8[_0x49b23f(0x224)][0x1]-_0x211883[_0x49b23f(0x224)][0x1])*_0x53a8d5,_0x211883['color'][0x2]+(_0x5811a8[_0x49b23f(0x224)][0x2]-_0x211883[_0x49b23f(0x224)][0x2])*_0x53a8d5,(_0x211883[_0x49b23f(0x224)][0x3]+(_0x5811a8['color'][0x3]-_0x211883[_0x49b23f(0x224)][0x3])*_0x53a8d5)*_0x10c367];},_0x4aed5f=(_0x2555b2,_0x194324,_0x8dd2d8)=>{const _0x14e16d=_0x3a9ea2;if(!Number['isFinite'](_0x2555b2))return 0x0;let [_0x37f039,_0x122bb6,_0x4b3532]=_0x308d1a(_0x2555b2,_0x194324[_0x14e16d(0x42f)](_0x52d955=>_0x52d955[_0x14e16d(0x431)])),_0x553754=_0x8dd2d8===_0x14e16d(0x301)?0x0:_0x4b3532;return _0x194324[_0x37f039][_0x14e16d(0x23e)]+(_0x194324[_0x122bb6][_0x14e16d(0x23e)]-_0x194324[_0x37f039][_0x14e16d(0x23e)])*_0x553754;},_0x140523={'position':[1.4,1.2,2.1],'target':[0.5,0.5,0.5],'up':[0x0,0x1,0x0],'projection':{'type':_0x3a9ea2(0x288),'fovYDegrees':0x2d,'near':0.01,'far':0x64}},_0x11d829=[0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1],_0x18f1a4=_0x64821e=>Math[_0x3a9ea2(0x3e9)](0x1,Math[_0x3a9ea2(0x1ac)](0x0,_0x64821e)),_0x547ffc=_0x22dc09=>_0x22dc09===_0x3a9ea2(0x44d)?0.012:_0x22dc09===_0x3a9ea2(0x425)?0.0025:_0x22dc09===_0x3a9ea2(0x3bc)?0.005:0.006,_0x3d8457=_0x2bf820=>_0x2bf820===_0x3a9ea2(0x44d)?0x8:_0x2bf820===_0x3a9ea2(0x425)?0x2:0x4,_0x501e69=(_0x2bd967,_0x3076e3)=>_0x3076e3>0x18?_0x2bd967==='quality'?_0x3a9ea2(0x3bc):'performance':_0x3076e3<0xe?_0x2bd967==='performance'?'balanced':_0x3a9ea2(0x425):_0x2bd967,_0x59300f=(_0x2e2cb5,_0x49c9fb)=>{const _0x54de02=_0x3a9ea2;if(!Number[_0x54de02(0x2ba)](_0x2e2cb5)||_0x2e2cb5<=0x0)throw Error(_0x49c9fb+'\x20must\x20be\x20a\x20positive\x20finite\x20number.\x20'+_0x49c9fb+'\x20必须是大于\x200\x20的有限数。');return _0x2e2cb5;},_0x221eb2=(_0xed17c6,_0xa7c372)=>{const _0x265f7b=_0x3a9ea2;if(!_0xa7c372)return{'minimum':[0x0,0x0,0x0],'maximum':[0x1,0x1,0x1]};let _0x3c081c=_0x18f1a4(_0x1514cb(_0xed17c6[_0x265f7b(0x474)][_0x265f7b(0x1f2)],_0xa7c372['minX'])),_0x42b9a9=_0x18f1a4(_0x1514cb(_0xed17c6[_0x265f7b(0x474)][_0x265f7b(0x1f2)],_0xa7c372['maxX'])),_0x40fb00=_0x18f1a4(_0x1514cb(_0xed17c6['metadata'][_0x265f7b(0x42c)],_0xa7c372[_0x265f7b(0x236)])),_0x3e5ed1=_0x18f1a4(_0x1514cb(_0xed17c6['metadata'][_0x265f7b(0x42c)],_0xa7c372['maxY'])),_0x20a7ec=_0x18f1a4(_0x1514cb(_0xed17c6[_0x265f7b(0x474)][_0x265f7b(0x46c)],_0xa7c372[_0x265f7b(0x17a)])),_0x4f4134=_0x18f1a4(_0x1514cb(_0xed17c6['metadata'][_0x265f7b(0x46c)],_0xa7c372[_0x265f7b(0x1ed)]));return{'minimum':[Math[_0x265f7b(0x3e9)](_0x3c081c,_0x42b9a9),Math[_0x265f7b(0x3e9)](_0x40fb00,_0x3e5ed1),Math['min'](_0x20a7ec,_0x4f4134)],'maximum':[Math[_0x265f7b(0x1ac)](_0x3c081c,_0x42b9a9),Math[_0x265f7b(0x1ac)](_0x40fb00,_0x3e5ed1),Math[_0x265f7b(0x1ac)](_0x20a7ec,_0x4f4134)]};},_0x22d2cf=()=>({'id':_0x3a9ea2(0x441),'topology':'line-list','depthMode':_0x3a9ea2(0x2c7),'vertices':new Float32Array([0x0,0x0,0x0,0x1,0.2,0.2,0x1,0x1,0x0,0x0,0x1,0.2,0.2,0x1,0x0,0x0,0x0,0.2,0x1,0.2,0x1,0x0,0x1,0x0,0.2,0x1,0.2,0x1,0x0,0x0,0x0,0.2,0.5,0x1,0x1,0x0,0x0,0x1,0.2,0.5,0x1,0x1])}),_0xda1e4d=()=>{const _0x3fabeb=_0x3a9ea2;let _0x51b52d=[0.1,0.53,0.56,0.62],_0x17a35f=[[0x0,0x0,0x0],[0x1,0x0,0x0],[0x0,0x1,0x0],[0x1,0x1,0x0],[0x0,0x0,0x1],[0x1,0x0,0x1],[0x0,0x1,0x1],[0x1,0x1,0x1]],_0x41c957=[[0x0,0x1],[0x0,0x2],[0x1,0x3],[0x2,0x3],[0x4,0x5],[0x4,0x6],[0x5,0x7],[0x6,0x7],[0x0,0x4],[0x1,0x5],[0x2,0x6],[0x3,0x7]],_0xa6336=new Float32Array(_0x41c957[_0x3fabeb(0x2e8)]*0x2*0x7),_0x2bb198=0x0;for(let _0x637dff of _0x41c957)for(let _0x362078 of _0x637dff)_0xa6336[_0x3fabeb(0x46d)]([..._0x17a35f[_0x362078],..._0x51b52d],_0x2bb198),_0x2bb198+=0x7;return{'id':'volume-bounds','topology':_0x3fabeb(0x186),'depthMode':_0x3fabeb(0x221),'vertices':_0xa6336};},_0x2d42c9=(_0x5b8e89,_0x433589,_0x2fbfe0,_0x4ad63c)=>{const _0x867332=_0x3a9ea2;let _0x4736f2=new Float32Array(_0x5b8e89[_0x867332(0x3a8)][_0x867332(0x2e8)]*0x7);for(let _0x22aa05=0x0;_0x22aa05<_0x5b8e89[_0x867332(0x3a8)][_0x867332(0x2e8)];_0x22aa05+=0x1){let _0x3d0aee=_0x5b8e89[_0x867332(0x3a8)][_0x22aa05],_0x571f05=_0x3d0aee*0x3,_0x2d7051=_0x4aed5f(_0x5b8e89[_0x867332(0x1a1)][_0x3d0aee],_0x2fbfe0,_0x4ad63c),_0x5a5dcc=_0x43be91(_0x5b8e89[_0x867332(0x1a1)][_0x3d0aee],_0x433589,_0x5b8e89[_0x867332(0x23e)]*_0x2d7051,_0x4ad63c);_0x4736f2[_0x867332(0x46d)]([_0x5b8e89[_0x867332(0x220)][_0x571f05],_0x5b8e89['positions'][_0x571f05+0x1],_0x5b8e89[_0x867332(0x220)][_0x571f05+0x2],_0x5a5dcc[0x0]*_0x5a5dcc[0x3],_0x5a5dcc[0x1]*_0x5a5dcc[0x3],_0x5a5dcc[0x2]*_0x5a5dcc[0x3],_0x5a5dcc[0x3]],_0x22aa05*0x7);}return{'id':_0x5b8e89['id'],'topology':_0x867332(0x29b),'depthMode':_0x5b8e89['depthMode'],'vertices':_0x4736f2};},_0x16e120=(_0x244855,_0x44b55e,_0x278982)=>{const _0x43eebe=_0x3a9ea2;let _0x3f3b2b=(_0x244855[_0x43eebe(0x38b)]['x']+0.5)/_0x44b55e[_0x43eebe(0x204)],_0x66aae=(_0x244855[_0x43eebe(0x38b)]['y']+0.5)/_0x44b55e[_0x43eebe(0x17d)],_0x2c2f61=(_0x244855[_0x43eebe(0x38b)]['z']+0.5)/_0x44b55e[_0x43eebe(0x457)];return Math[_0x43eebe(0x1d3)](_0x3f3b2b-_0x278982[_0x43eebe(0x1d2)][0x0],_0x66aae-_0x278982['position'][0x1],_0x2c2f61-_0x278982[_0x43eebe(0x1d2)][0x2]);},_0x3434ac=(_0x1dfb84,_0x1804e6)=>(_0x1dfb84[_0x3a9ea2(0x38b)]['z']*_0x1804e6['countY']+_0x1dfb84[_0x3a9ea2(0x38b)]['y'])*_0x1804e6[_0x3a9ea2(0x204)]+_0x1dfb84[_0x3a9ea2(0x38b)]['x'],_0x3e0ad5=(_0x3d2e4d,_0x201e27,_0x1c3357,_0x3e58f5)=>{const _0x43a2f1=_0x3a9ea2;let _0x28dd49=_0x1c3357==='x'?{'start':_0x3d2e4d[_0x43a2f1(0x1af)][_0x43a2f1(0x3b3)],'count':_0x3d2e4d[_0x43a2f1(0x1af)][_0x43a2f1(0x243)],'size':_0x201e27[_0x43a2f1(0x474)][_0x43a2f1(0x1f2)][_0x43a2f1(0x25f)]}:_0x1c3357==='y'?{'start':_0x3d2e4d[_0x43a2f1(0x1af)][_0x43a2f1(0x1dc)],'count':_0x3d2e4d['coreRange']['levelCount'],'size':_0x201e27[_0x43a2f1(0x474)][_0x43a2f1(0x42c)]['count']}:{'start':_0x3d2e4d[_0x43a2f1(0x1af)][_0x43a2f1(0x38c)],'count':_0x3d2e4d[_0x43a2f1(0x1af)][_0x43a2f1(0x189)],'size':_0x201e27[_0x43a2f1(0x474)][_0x43a2f1(0x46c)][_0x43a2f1(0x25f)]};return _0x3e58f5>=_0x28dd49[_0x43a2f1(0x239)]/_0x28dd49[_0x43a2f1(0x439)]&&_0x3e58f5<=(_0x28dd49[_0x43a2f1(0x239)]+_0x28dd49['count'])/_0x28dd49[_0x43a2f1(0x439)];},_0x7be8e0=(_0x554cf6,_0x86a9cf,_0x3c62f6)=>{const _0x4821f4=_0x3a9ea2;let _0x5bc6c3=_0x554cf6[_0x4821f4(0x1af)][_0x4821f4(0x3b3)]/_0x86a9cf[_0x4821f4(0x474)][_0x4821f4(0x1f2)][_0x4821f4(0x25f)],_0x3cdfad=(_0x554cf6['coreRange'][_0x4821f4(0x3b3)]+_0x554cf6[_0x4821f4(0x1af)][_0x4821f4(0x243)])/_0x86a9cf[_0x4821f4(0x474)]['xAxis'][_0x4821f4(0x25f)],_0x5902eb=_0x554cf6[_0x4821f4(0x1af)][_0x4821f4(0x1dc)]/_0x86a9cf[_0x4821f4(0x474)][_0x4821f4(0x42c)][_0x4821f4(0x25f)],_0x50d441=(_0x554cf6[_0x4821f4(0x1af)][_0x4821f4(0x1dc)]+_0x554cf6[_0x4821f4(0x1af)][_0x4821f4(0x3f3)])/_0x86a9cf[_0x4821f4(0x474)][_0x4821f4(0x42c)][_0x4821f4(0x25f)],_0x23bf92=_0x554cf6[_0x4821f4(0x1af)][_0x4821f4(0x38c)]/_0x86a9cf[_0x4821f4(0x474)][_0x4821f4(0x46c)][_0x4821f4(0x25f)],_0x59dfd4=(_0x554cf6[_0x4821f4(0x1af)][_0x4821f4(0x38c)]+_0x554cf6['coreRange']['sourceYCount'])/_0x86a9cf[_0x4821f4(0x474)][_0x4821f4(0x46c)]['count'];return _0x3c62f6[_0x4821f4(0x3fd)](_0x5460c7=>{const _0x27ef73=_0x4821f4;let _0x26e369=_0x1514cb(_0x86a9cf['metadata']['yAxis'],_0x5460c7['heights'][0x0]),_0x3d2c57=_0x1514cb(_0x86a9cf[_0x27ef73(0x474)][_0x27ef73(0x42c)],_0x5460c7[_0x27ef73(0x23b)][_0x5460c7[_0x27ef73(0x23b)]['length']-0x1]);if(Math[_0x27ef73(0x1ac)](_0x26e369,_0x3d2c57)<_0x5902eb||Math['min'](_0x26e369,_0x3d2c57)>_0x50d441)return!0x1;for(let _0x565124=0x0;_0x565124<_0x5460c7[_0x27ef73(0x284)]['length'];_0x565124+=0x2){let _0x2dd21b=_0x1514cb(_0x86a9cf[_0x27ef73(0x474)][_0x27ef73(0x1f2)],_0x5460c7['path'][_0x565124]),_0x34c8ac=_0x1514cb(_0x86a9cf[_0x27ef73(0x474)]['zAxis'],_0x5460c7['path'][_0x565124+0x1]);if(_0x2dd21b>=_0x5bc6c3&&_0x2dd21b<=_0x3cdfad&&_0x34c8ac>=_0x23bf92&&_0x34c8ac<=_0x59dfd4)return!0x0;}return!0x1;});},_0x3aed27=(_0x48d7b6,_0x285bb8,_0x557ac3,_0x18268f)=>{const _0x4c0131=_0x3a9ea2;let _0x23550a=_0x557ac3['preview'];if(_0x23550a){let _0x448664=_0x23550a[_0x4c0131(0x35f)]==='x'?_0x285bb8[_0x4c0131(0x474)]['xAxis']:_0x23550a[_0x4c0131(0x35f)]==='y'?_0x285bb8['metadata']['yAxis']:_0x285bb8[_0x4c0131(0x474)]['zAxis'];if(_0x3e0ad5(_0x48d7b6,_0x285bb8,_0x23550a[_0x4c0131(0x35f)],_0x1514cb(_0x448664,_0x23550a[_0x4c0131(0x1d2)])))return 0x0;}for(let _0x19dea3 of _0x557ac3['lockedSlices']){let _0x2bd43e=_0x19dea3[_0x4c0131(0x35f)]==='x'?_0x285bb8[_0x4c0131(0x474)][_0x4c0131(0x1f2)]:_0x19dea3[_0x4c0131(0x35f)]==='y'?_0x285bb8['metadata'][_0x4c0131(0x42c)]:_0x285bb8[_0x4c0131(0x474)]['zAxis'];if(_0x19dea3[_0x4c0131(0x1eb)]&&_0x3e0ad5(_0x48d7b6,_0x285bb8,_0x19dea3[_0x4c0131(0x35f)],_0x1514cb(_0x2bd43e,_0x19dea3['position'])))return 0x1;}return _0x7be8e0(_0x48d7b6,_0x285bb8,_0x18268f)?0x2:0x3;};var _0x302425=class _0x170e20{['backend']=_0x3a9ea2(0x315);['renderer'];['volumeCamera'];[_0x3a9ea2(0x29d)];[_0x3a9ea2(0x2c4)];[_0x3a9ea2(0x339)];[_0x3a9ea2(0x209)]=[];[_0x3a9ea2(0x384)];[_0x3a9ea2(0x44b)];[_0x3a9ea2(0x361)];[_0x3a9ea2(0x427)];[_0x3a9ea2(0x448)];[_0x3a9ea2(0x333)];['opacityStops'];['profiles']=[];['timeIndex'];[_0x3a9ea2(0x2ff)]=0x0;['loadedKeys']=new Set();['pendingKeys']=new Map();[_0x3a9ea2(0x29c)]=new Set();[_0x3a9ea2(0x44a)]=0x0;['destroyed']=!0x1;['baseModelMatrix'];['verticalScale'];[_0x3a9ea2(0x42b)];[_0x3a9ea2(0x286)];['quality'];[_0x3a9ea2(0x3b4)]=_0x3a9ea2(0x3bc);['autoFrameCount']=0x0;['autoFrameIntervalTotal']=0x0;[_0x3a9ea2(0x330)];[_0x3a9ea2(0x2a9)]=null;[_0x3a9ea2(0x26a)];[_0x3a9ea2(0x3f4)];[_0x3a9ea2(0x1d4)];['interactionRenderScale'];[_0x3a9ea2(0x443)];[_0x3a9ea2(0x38a)]=new Set();[_0x3a9ea2(0x3b1)]=!0x0;[_0x3a9ea2(0x299)]=!0x1;[_0x3a9ea2(0x342)]=0x0;[_0x3a9ea2(0x3bb)]=0x0;[_0x3a9ea2(0x321)]=null;[_0x3a9ea2(0x3a3)];[_0x3a9ea2(0x31a)];[_0x3a9ea2(0x227)];[_0x3a9ea2(0x1a3)]=0x0;['lastTimingFrameTimestamp']=0x0;['actualFrameIntervalMilliseconds']=0x0;[_0x3a9ea2(0x3e0)]=new Set();[_0x3a9ea2(0x2e7)]=null;[_0x3a9ea2(0x1c0)]=null;constructor(_0x60e719,_0x16d741){const _0x11de66=_0x3a9ea2;this[_0x11de66(0x24e)]=_0x16d741,this['canvas']=_0x60e719['canvas'],this[_0x11de66(0x339)]=_0x60e719[_0x11de66(0x339)]??_0x60e719[_0x11de66(0x29d)],this[_0x11de66(0x2c4)]=_0x60e719['renderMode']??_0x11de66(0x1f9),this['source']=_0x60e719['source'],this[_0x11de66(0x48d)]=_0x60e719[_0x11de66(0x48d)]??0x0,this['layout']=this[_0x11de66(0x493)](_0x60e719),this[_0x11de66(0x361)]=_0x151690(this[_0x11de66(0x384)][_0x11de66(0x474)],this['layout']),this['volumeCamera']=new _0xbc1613({'state':_0x60e719[_0x11de66(0x34b)]??_0x140523}),this['sliceState']=this['createSliceState'](_0x60e719);let _0x2dc423=_0x22be8e(_0x60e719[_0x11de66(0x448)],_0x60e719[_0x11de66(0x32c)]);if(this['colorStops']=_0x2dc423['colorStops'],this[_0x11de66(0x333)]=_0x60e719[_0x11de66(0x448)],this[_0x11de66(0x32c)]=_0x60e719[_0x11de66(0x32c)],this[_0x11de66(0x46a)]=_0x60e719[_0x11de66(0x1e0)]??_0x11d829,this['verticalScale']=_0x59300f(_0x60e719[_0x11de66(0x36b)]??0x1,_0x11de66(0x36b)),this[_0x11de66(0x42b)]=_0x60e719['coordinateSystem']??_0x11de66(0x289),this[_0x11de66(0x42b)]==='geographic-wgs84'&&_0x60e719['modelMatrix'])throw Error('Geographic\x20WGS84\x20volume\x20scenes\x20manage\x20their\x20own\x20model\x20transform.\x20WGS84\x20地理体积场景自行管理模型变换。');this['clipBox']=_0x60e719[_0x11de66(0x286)]??null,this[_0x11de66(0x425)]=_0x60e719[_0x11de66(0x425)]??'auto',this['navigationMode']=_0x60e719[_0x11de66(0x26a)]??_0x11de66(0x2e3),this[_0x11de66(0x3f4)]=_0x59300f(_0x60e719[_0x11de66(0x3f4)]??0x2,_0x11de66(0x3f4)),this[_0x11de66(0x1d4)]=_0x59300f(_0x60e719[_0x11de66(0x1d4)]??0x1,'renderScale'),this[_0x11de66(0x393)]=_0x59300f(_0x60e719[_0x11de66(0x393)]??0.6,_0x11de66(0x393)),this[_0x11de66(0x443)]=_0x59300f(_0x60e719[_0x11de66(0x443)]??0x1,_0x11de66(0x443)),this[_0x11de66(0x330)]=_0x60e719[_0x11de66(0x330)]??_0x11de66(0x3d3),this[_0x11de66(0x3a3)]=_0x60e719[_0x11de66(0x2e7)]?.[_0x11de66(0x462)]??'scene',this[_0x11de66(0x31a)]=_0x60e719['sliceInteraction']?.['plateColor'],this[_0x11de66(0x227)]=_0x60e719[_0x11de66(0x2e7)]?.[_0x11de66(0x227)],this['renderer'][_0x11de66(0x3aa)](()=>this[_0x11de66(0x1c9)]()),this[_0x11de66(0x24e)][_0x11de66(0x383)](_0x2dc423[_0x11de66(0x448)],_0x2dc423[_0x11de66(0x32c)]);let _0x11fcb8=_0x60e719[_0x11de66(0x45b)]??this[_0x11de66(0x42b)]===_0x11de66(0x289);this[_0x11de66(0x24e)]['setAxes'](_0x11fcb8?[_0xda1e4d(),_0x22d2cf()]:[]),this['renderer'][_0x11de66(0x3a6)]({'renderMode':_0x60e719['mode']??'composite','colorMode':this[_0x11de66(0x330)],'opacity':_0x60e719[_0x11de66(0x23e)]??0.3,'densityScale':_0x60e719[_0x11de66(0x399)]??0x1,'stepLength':this[_0x11de66(0x2fa)](),'volumeDimFactor':this[_0x11de66(0x427)][_0x11de66(0x3d5)]}),this['configureSource'](),this[_0x11de66(0x47a)](),this['bindSliceState'](),this['bindSliceInteraction'](_0x60e719),this[_0x11de66(0x389)]();}static async[_0x3a9ea2(0x438)](_0x241a56){const _0x5cbee8=_0x3a9ea2;if(_0x5d3edd(_0x241a56[_0x5cbee8(0x384)]),_0x18abc7(_0x241a56[_0x5cbee8(0x384)][_0x5cbee8(0x474)],_0x241a56[_0x5cbee8(0x48d)]??0x0),(_0x241a56[_0x5cbee8(0x2af)]?.['halo']??0x1)!==0x1)throw Error(_0x5cbee8(0x319));let _0x5c2aab=_0x241a56['chunk']?.[_0x5cbee8(0x292)]??0x20000000,_0x5e7f71=new _0x430b40({'memoryTargetBytes':_0x5c2aab,'memoryHardLimitBytes':_0x241a56[_0x5cbee8(0x2af)]?.[_0x5cbee8(0x355)]??_0x5c2aab});await _0x5e7f71[_0x5cbee8(0x39c)](_0x241a56['canvas']);let _0x44aea1=new _0x170e20(_0x241a56,_0x5e7f71);return _0x44aea1['resize'](),_0x44aea1['scheduleBricks'](),_0x44aea1['renderMode']===_0x5cbee8(0x1f9)&&_0x44aea1['requestRender'](),_0x44aea1;}get[_0x3a9ea2(0x34b)](){const _0x624c1d=_0x3a9ea2;return this[_0x624c1d(0x40a)][_0x624c1d(0x465)];}get[_0x3a9ea2(0x211)](){const _0x3a61be=_0x3a9ea2;return this[_0x3a61be(0x427)]['lockedSlices'];}get[_0x3a9ea2(0x2a4)](){const _0x44179b=_0x3a9ea2;let _0x4ee86d=this[_0x44179b(0x2c4)]===_0x44179b(0x2d8)||this[_0x44179b(0x282)]()||performance[_0x44179b(0x2f2)]()-this[_0x44179b(0x1a3)]<=0xfa?this[_0x44179b(0x310)]:0x0;return{...this[_0x44179b(0x24e)][_0x44179b(0x2a4)],'pendingBrickCount':this['pendingKeys'][_0x44179b(0x439)],'brickScheduleCount':this[_0x44179b(0x342)],'brickSortCount':this[_0x44179b(0x3bb)],'actualFrameIntervalMilliseconds':_0x4ee86d,'estimatedFps':_0x4ee86d>0x0?0x3e8/_0x4ee86d:0x0,'effectiveQuality':this[_0x44179b(0x181)](),'effectiveRenderScale':this[_0x44179b(0x40f)](),'interactionKind':this[_0x44179b(0x379)]()};}[_0x3a9ea2(0x3a6)](_0x933128){const _0x1acb09=_0x3a9ea2;_0x933128['camera']&&this['setCamera'](_0x933128[_0x1acb09(0x34b)]),_0x933128[_0x1acb09(0x1e0)]&&(this[_0x1acb09(0x46a)]=[..._0x933128['modelMatrix']]),_0x933128[_0x1acb09(0x36b)]!==void 0x0&&(this[_0x1acb09(0x36b)]=_0x59300f(_0x933128[_0x1acb09(0x36b)],'verticalScale')),_0x933128[_0x1acb09(0x286)]!==void 0x0&&(this['clipBox']=_0x933128['clipBox']),_0x933128[_0x1acb09(0x425)]&&(this[_0x1acb09(0x425)]=_0x933128[_0x1acb09(0x425)]),_0x933128[_0x1acb09(0x26a)]&&(this['navigationMode']=_0x933128[_0x1acb09(0x26a)]);let _0x5b8ad0=!0x1;if(_0x933128[_0x1acb09(0x3f4)]!==void 0x0&&(this[_0x1acb09(0x3f4)]=_0x59300f(_0x933128[_0x1acb09(0x3f4)],_0x1acb09(0x3f4)),_0x5b8ad0=!0x0),_0x933128[_0x1acb09(0x1d4)]!==void 0x0&&(this[_0x1acb09(0x1d4)]=_0x59300f(_0x933128['renderScale'],_0x1acb09(0x1d4)),_0x5b8ad0=!0x0),_0x933128[_0x1acb09(0x393)]!==void 0x0&&(this[_0x1acb09(0x393)]=_0x59300f(_0x933128[_0x1acb09(0x393)],'interactionRenderScale'),_0x5b8ad0=this[_0x1acb09(0x282)]()),_0x933128[_0x1acb09(0x443)]!==void 0x0&&(this[_0x1acb09(0x443)]=_0x59300f(_0x933128[_0x1acb09(0x443)],_0x1acb09(0x443))),_0x933128[_0x1acb09(0x330)]&&(this[_0x1acb09(0x330)]=_0x933128[_0x1acb09(0x330)]),_0x933128['colorStops']||_0x933128[_0x1acb09(0x32c)]){let _0x4edd4b=_0x22be8e(_0x933128['colorStops']??this[_0x1acb09(0x333)],_0x933128[_0x1acb09(0x32c)]??this['opacityStops']);this['colorStops']=_0x4edd4b['colorStops'],this[_0x1acb09(0x333)]=_0x933128[_0x1acb09(0x448)]??this[_0x1acb09(0x333)],this[_0x1acb09(0x32c)]=_0x933128[_0x1acb09(0x32c)]??this[_0x1acb09(0x32c)],this['renderer'][_0x1acb09(0x383)](_0x4edd4b[_0x1acb09(0x448)],_0x4edd4b[_0x1acb09(0x32c)]),this[_0x1acb09(0x2b1)]();}_0x933128['colorMode']&&!_0x933128[_0x1acb09(0x448)]&&!_0x933128[_0x1acb09(0x32c)]&&this[_0x1acb09(0x2b1)](),this[_0x1acb09(0x24e)][_0x1acb09(0x3a6)]({'renderMode':_0x933128[_0x1acb09(0x1b7)],'colorMode':_0x933128[_0x1acb09(0x330)],'opacity':_0x933128[_0x1acb09(0x23e)],'densityScale':_0x933128[_0x1acb09(0x399)],'stepLength':this[_0x1acb09(0x2fa)]()}),this[_0x1acb09(0x47a)](),_0x5b8ad0&&this['resize'](),this[_0x1acb09(0x464)]();}['setCamera'](_0x361feb){const _0x135f06=_0x3a9ea2;this[_0x135f06(0x40a)]['setState'](_0x361feb),this[_0x135f06(0x419)](),this[_0x135f06(0x464)]();}[_0x3a9ea2(0x3ae)](_0x2f52f6){const _0xb9eb19=_0x3a9ea2;_0x18abc7(this[_0xb9eb19(0x384)][_0xb9eb19(0x474)],_0x2f52f6),_0x2f52f6!==this['timeIndex']&&(this[_0xb9eb19(0x48d)]=_0x2f52f6,this[_0xb9eb19(0x22d)]());}[_0x3a9ea2(0x1d6)](_0xaa9bfd){const _0x3a68ea=_0x3a9ea2;_0x5d3edd(_0xaa9bfd),this[_0x3a68ea(0x384)]=_0xaa9bfd,this[_0x3a68ea(0x48d)]=Math[_0x3a68ea(0x3e9)](this[_0x3a68ea(0x48d)],_0xaa9bfd[_0x3a68ea(0x474)][_0x3a68ea(0x45c)]-0x1),this[_0x3a68ea(0x44b)]=_0x3712e3(_0xaa9bfd['metadata'],this['layout'][_0x3a68ea(0x1ab)]),this['descriptors']=_0x151690(_0xaa9bfd['metadata'],this['layout']),this[_0x3a68ea(0x427)]['setAxes'](_0xaa9bfd[_0x3a68ea(0x474)]),this[_0x3a68ea(0x3e7)](),this['configureModel'](),this[_0x3a68ea(0x22d)](),this[_0x3a68ea(0x2b1)](),this[_0x3a68ea(0x464)]();}['setRouteProfiles'](_0x4955dc){const _0x1289ef=_0x3a9ea2;this[_0x1289ef(0x1cb)]=_0x4955dc,this[_0x1289ef(0x2b1)](),this[_0x1289ef(0x419)](),this['requestRender']();}[_0x3a9ea2(0x1a9)](_0x26ea7c){const _0x54d0e5=_0x3a9ea2;this['sliceState'][_0x54d0e5(0x2dc)](_0x26ea7c);}['beginInteraction'](_0x2265d5){const _0x2c2605=_0x3a9ea2;if(this[_0x2c2605(0x28a)]||this[_0x2c2605(0x38a)][_0x2c2605(0x3cf)](_0x2265d5))return;let _0x19c97e=!this[_0x2c2605(0x282)]();this[_0x2c2605(0x38a)][_0x2c2605(0x451)](_0x2265d5),_0x19c97e&&(this['lastTimingFrameTimestamp']=0x0,this['resize']());}[_0x3a9ea2(0x1b4)](_0x42c208){const _0x186629=_0x3a9ea2;this[_0x186629(0x28a)]||!this[_0x186629(0x38a)]['delete'](_0x42c208)||this[_0x186629(0x282)]()||(this[_0x186629(0x2e0)]=0x0,this[_0x186629(0x3df)]());}['lockSlice'](_0x4d7d7b,_0x50ea80){const _0x180857=_0x3a9ea2;this[_0x180857(0x427)][_0x180857(0x37f)](_0x4d7d7b,_0x50ea80);let _0x588572=this[_0x180857(0x427)]['lockPreview']();if(!_0x588572)throw Error(_0x180857(0x3d1));return _0x588572;}[_0x3a9ea2(0x402)](_0x136b34,_0x4d9541){const _0x287292=_0x3a9ea2;this[_0x287292(0x427)][_0x287292(0x23f)](_0x136b34,_0x4d9541);}[_0x3a9ea2(0x3cc)](_0x222007){const _0x5f4f06=_0x3a9ea2;this['sliceState'][_0x5f4f06(0x3cc)](_0x222007);}['clearLockedSlices'](){const _0x711526=_0x3a9ea2;this[_0x711526(0x427)]['clearLockedSlices']();}['resize'](){const _0x364f9b=_0x3a9ea2;let _0x2f14e9=Math[_0x364f9b(0x3e9)](window['devicePixelRatio']||0x1,this[_0x364f9b(0x3f4)])*this[_0x364f9b(0x40f)](),_0x1a0aac=Math[_0x364f9b(0x1ac)](0x1,Math[_0x364f9b(0x2b8)](this['canvas']['clientWidth']*_0x2f14e9||this['canvas'][_0x364f9b(0x1cc)]||0x1)),_0x4f73bf=Math[_0x364f9b(0x1ac)](0x1,Math[_0x364f9b(0x2b8)](this[_0x364f9b(0x29d)][_0x364f9b(0x1cf)]*_0x2f14e9||this[_0x364f9b(0x29d)][_0x364f9b(0x22a)]||0x1));this[_0x364f9b(0x40a)][_0x364f9b(0x2aa)](_0x1a0aac/_0x4f73bf),(this[_0x364f9b(0x29d)][_0x364f9b(0x1cc)]!==_0x1a0aac||this['canvas']['height']!==_0x4f73bf)&&this[_0x364f9b(0x24e)][_0x364f9b(0x3df)](_0x1a0aac,_0x4f73bf),this['requestRender']();}['render'](){const _0x515e73=_0x3a9ea2;if(this[_0x515e73(0x28a)])return;this[_0x515e73(0x262)](),this[_0x515e73(0x270)]();let _0x4f5693=this['volumeCamera'][_0x515e73(0x247)];if(this[_0x515e73(0x24e)][_0x515e73(0x3b9)]({'viewProjection':Array[_0x515e73(0x18d)](_0x4f5693[_0x515e73(0x3f2)]),'inverseViewProjection':Array[_0x515e73(0x18d)](_0x4f5693[_0x515e73(0x338)]),'cameraPosition':this['volumeCamera'][_0x515e73(0x465)][_0x515e73(0x1d2)]}),this[_0x515e73(0x24e)]['update']({'stepLength':this[_0x515e73(0x2fa)]()}),!this[_0x515e73(0x24e)][_0x515e73(0x273)]()){this[_0x515e73(0x3b1)]=!0x0;return;}this['renderDirty']=!0x1,this[_0x515e73(0x471)](performance[_0x515e73(0x2f2)]()),this[_0x515e73(0x1c0)]?.[_0x515e73(0x3a6)]();}[_0x3a9ea2(0x40d)](){const _0x58b64a=_0x3a9ea2;if(this[_0x58b64a(0x28a)])return Promise[_0x58b64a(0x48c)](Error(_0x58b64a(0x32e)));this[_0x58b64a(0x262)](),this['flushBrickSchedule']();let _0x32f06a=this['volumeCamera']['matrices'];return this[_0x58b64a(0x24e)]['setCamera']({'viewProjection':Array['from'](_0x32f06a['viewProjection']),'inverseViewProjection':Array[_0x58b64a(0x18d)](_0x32f06a[_0x58b64a(0x338)]),'cameraPosition':this['volumeCamera'][_0x58b64a(0x465)][_0x58b64a(0x1d2)]}),this[_0x58b64a(0x24e)][_0x58b64a(0x40d)]();}[_0x3a9ea2(0x421)](){const _0x263453=_0x3a9ea2;if(!this[_0x263453(0x28a)]){this[_0x263453(0x28a)]=!0x0,this[_0x263453(0x2ff)]+=0x1;for(let _0x5588fc of this[_0x263453(0x3e0)])_0x5588fc[_0x263453(0x3d9)]();this[_0x263453(0x3e0)][_0x263453(0x33b)](),cancelAnimationFrame(this[_0x263453(0x44a)]),this['renderer'][_0x263453(0x3aa)](null),this[_0x263453(0x209)][_0x263453(0x1c5)](0x0)[_0x263453(0x2e5)](_0x2d1b9=>_0x2d1b9()),this['renderer']['destroy'](),this[_0x263453(0x2e7)]?.[_0x263453(0x421)](),this[_0x263453(0x1c0)]?.[_0x263453(0x421)](),this[_0x263453(0x21a)]['clear'](),this[_0x263453(0x2e4)][_0x263453(0x33b)](),this[_0x263453(0x29c)]['clear'](),this['activeInteractions'][_0x263453(0x33b)](),this[_0x263453(0x321)]=null;}}[_0x3a9ea2(0x493)](_0x59b25){const _0x2abcc3=_0x3a9ea2;return _0x3712e3(_0x59b25[_0x2abcc3(0x384)][_0x2abcc3(0x474)],{'width':_0x59b25[_0x2abcc3(0x2af)]?.[_0x2abcc3(0x1cc)],'height':_0x59b25[_0x2abcc3(0x2af)]?.[_0x2abcc3(0x22a)],'depth':_0x59b25['chunk']?.['depth'],'halo':_0x59b25['chunk']?.[_0x2abcc3(0x3ca)]});}[_0x3a9ea2(0x181)](){const _0x953e9b=_0x3a9ea2;return this[_0x953e9b(0x425)]==='auto'?this['autoQuality']:this[_0x953e9b(0x425)];}[_0x3a9ea2(0x2fa)](){const _0xe5a46c=_0x3a9ea2;let _0x21585c=_0x547ffc(this[_0xe5a46c(0x181)]());return(this[_0xe5a46c(0x42b)]==='geographic-wgs84'?_0x21585c*0.05:_0x21585c)*(this['isInteracting']()?this[_0xe5a46c(0x443)]:0x1);}[_0x3a9ea2(0x282)](){const _0x4fadf7=_0x3a9ea2;return this[_0x4fadf7(0x38a)][_0x4fadf7(0x439)]>0x0;}[_0x3a9ea2(0x379)](){const _0x37691c=_0x3a9ea2;return this[_0x37691c(0x38a)][_0x37691c(0x439)]===0x0?_0x37691c(0x1e2):this['activeInteractions'][_0x37691c(0x439)]>0x1?_0x37691c(0x25e):this[_0x37691c(0x38a)][_0x37691c(0x1a1)]()[_0x37691c(0x43d)]()[_0x37691c(0x431)]??_0x37691c(0x1e2);}[_0x3a9ea2(0x40f)](){const _0x4b0758=_0x3a9ea2;return this[_0x4b0758(0x1d4)]*(this[_0x4b0758(0x282)]()?this['interactionRenderScale']:0x1);}[_0x3a9ea2(0x471)](_0x78d046){const _0x34c2b4=_0x3a9ea2;if(this[_0x34c2b4(0x1a3)]=_0x78d046,!(this[_0x34c2b4(0x2c4)]==='external'||this[_0x34c2b4(0x282)]())){this[_0x34c2b4(0x2e0)]=0x0;return;}if(this[_0x34c2b4(0x2e0)]>0x0){let _0x22f2fd=_0x78d046-this[_0x34c2b4(0x2e0)];_0x22f2fd>0x0&&_0x22f2fd<=0xfa&&(this['actualFrameIntervalMilliseconds']=this[_0x34c2b4(0x310)]===0x0?_0x22f2fd:this[_0x34c2b4(0x310)]*0.8+_0x22f2fd*0.2,this[_0x34c2b4(0x214)](_0x22f2fd));}this[_0x34c2b4(0x2e0)]=_0x78d046;}[_0x3a9ea2(0x214)](_0x1f0a10){const _0x251bc9=_0x3a9ea2;if(this[_0x251bc9(0x425)]!=='auto'||(this[_0x251bc9(0x362)]+=0x1,this[_0x251bc9(0x28f)]+=_0x1f0a10,this[_0x251bc9(0x362)]<0x1e))return;let _0x450a89=this[_0x251bc9(0x28f)]/this[_0x251bc9(0x362)];if(this['autoFrameCount']=0x0,this[_0x251bc9(0x28f)]=0x0,this[_0x251bc9(0x282)]()&&_0x450a89<0xe)return;let _0x107261=_0x501e69(this['autoQuality'],_0x450a89);_0x107261!==this[_0x251bc9(0x3b4)]&&(this[_0x251bc9(0x3b4)]=_0x107261,this[_0x251bc9(0x419)](),this[_0x251bc9(0x464)]());}[_0x3a9ea2(0x20f)](_0x2ee9fc){const _0x447bdb=_0x3a9ea2;return new _0x144448(_0x2ee9fc[_0x447bdb(0x384)]['metadata'],{'volumeDimFactor':_0x2ee9fc[_0x447bdb(0x2e7)]?.[_0x447bdb(0x3d5)],'depthMode':_0x2ee9fc[_0x447bdb(0x2e7)]?.['depthMode'],'maxLockedSlices':_0x2ee9fc[_0x447bdb(0x2e7)]?.[_0x447bdb(0x26f)],'onLimitReached':_0x45b677=>_0x2ee9fc[_0x447bdb(0x2e7)]?.[_0x447bdb(0x2d6)]?.(Error(_0x447bdb(0x27f)+_0x45b677+_0x447bdb(0x1ee)+_0x45b677+'。'))});}[_0x3a9ea2(0x24d)](){const _0x509a97=_0x3a9ea2;let _0x27f94b=this[_0x509a97(0x427)][_0x509a97(0x360)](_0x44880e=>{const _0x5a04bb=_0x509a97;this[_0x5a04bb(0x321)]=_0x44880e,this[_0x5a04bb(0x464)]();});this[_0x509a97(0x209)][_0x509a97(0x23d)](_0x27f94b);}[_0x3a9ea2(0x262)](){const _0x538036=_0x3a9ea2;let _0x426ad6=this[_0x538036(0x321)];if(!_0x426ad6)return;this['pendingSliceSnapshot']=null;let _0x195c9f=[];if(_0x426ad6['preview']){let _0x3be3d6=_0x426ad6['preview'][_0x538036(0x35f)]==='x'?this[_0x538036(0x384)][_0x538036(0x474)][_0x538036(0x1f2)]:_0x426ad6[_0x538036(0x2f6)]['axis']==='y'?this[_0x538036(0x384)][_0x538036(0x474)][_0x538036(0x42c)]:this[_0x538036(0x384)][_0x538036(0x474)][_0x538036(0x46c)];_0x195c9f[_0x538036(0x23d)]({'id':'volume-slice-preview','axis':_0x426ad6[_0x538036(0x2f6)][_0x538036(0x35f)],'position':_0x18f1a4(_0x1514cb(_0x3be3d6,_0x426ad6['preview'][_0x538036(0x1d2)])),'depthMode':this['sliceDepthMode'],'visible':!0x0,'opacity':0.72,'plateColor':this['slicePlateColor']});}for(let _0x51d93e of _0x426ad6[_0x538036(0x211)]){let _0x19759b=_0x51d93e[_0x538036(0x35f)]==='x'?this[_0x538036(0x384)][_0x538036(0x474)][_0x538036(0x1f2)]:_0x51d93e[_0x538036(0x35f)]==='y'?this[_0x538036(0x384)][_0x538036(0x474)][_0x538036(0x42c)]:this[_0x538036(0x384)][_0x538036(0x474)][_0x538036(0x46c)];_0x195c9f[_0x538036(0x23d)]({..._0x51d93e,'position':_0x18f1a4(_0x1514cb(_0x19759b,_0x51d93e[_0x538036(0x1d2)])),'opacity':0x1,'plateColor':this[_0x538036(0x31a)]});}this[_0x538036(0x24e)][_0x538036(0x1a2)](_0x195c9f),this[_0x538036(0x24e)][_0x538036(0x3a6)]({'volumeDimFactor':_0x426ad6['preview']||_0x426ad6[_0x538036(0x211)][_0x538036(0x3fd)](_0x8b204c=>_0x8b204c[_0x538036(0x1eb)])?_0x426ad6['volumeDimFactor']:0x1}),this[_0x538036(0x227)]?.(_0x426ad6['lockedSlices']),this[_0x538036(0x299)]=!0x0;}[_0x3a9ea2(0x3e3)](_0x4cdbfb){const _0x12d24a=_0x3a9ea2;let _0x425339=()=>({'viewProjectionMatrix':this[_0x12d24a(0x40a)]['matrices'][_0x12d24a(0x3f2)],'modelMatrix':_0x7388f0(this[_0x12d24a(0x46a)],this[_0x12d24a(0x36b)]),'viewportWidth':Math['max'](0x1,this[_0x12d24a(0x29d)][_0x12d24a(0x334)]),'viewportHeight':Math[_0x12d24a(0x1ac)](0x1,this['canvas']['clientHeight'])});this[_0x12d24a(0x2e7)]=new _0x1ec6f2(this[_0x12d24a(0x339)],this['sliceState'],_0x425339,{'hitTolerancePixels':_0x4cdbfb[_0x12d24a(0x2e7)]?.[_0x12d24a(0x309)],'onInteractionStart':()=>this[_0x12d24a(0x256)]('slice'),'onInteractionEnd':()=>this[_0x12d24a(0x1b4)](_0x12d24a(0x212))}),this[_0x12d24a(0x2e7)][_0x12d24a(0x39c)](),_0x4cdbfb[_0x12d24a(0x1e3)]&&(this[_0x12d24a(0x1c0)]=new _0x37401f(_0x4cdbfb[_0x12d24a(0x1e3)],this[_0x12d24a(0x427)],_0x425339,{'interactionController':this['sliceInteraction']}));}[_0x3a9ea2(0x389)](){const _0x31f668=_0x3a9ea2;let _0x53c46c=_0x1273e4=>{const _0x2c0d11=_0x571d;_0x1273e4[_0x2c0d11(0x26b)]!==0x0&&_0x1273e4['button']!==0x2||(this[_0x2c0d11(0x2a9)]={'id':_0x1273e4[_0x2c0d11(0x36c)],'x':_0x1273e4[_0x2c0d11(0x2c8)],'y':_0x1273e4[_0x2c0d11(0x470)],'pan':_0x1273e4[_0x2c0d11(0x26b)]===0x2||_0x1273e4[_0x2c0d11(0x36f)]!==_0x2c0d11(0x35e)&&this[_0x2c0d11(0x26a)]===_0x2c0d11(0x25c)},this[_0x2c0d11(0x256)]('camera'),this[_0x2c0d11(0x339)][_0x2c0d11(0x3dc)]?.(_0x1273e4[_0x2c0d11(0x36c)]),_0x1273e4[_0x2c0d11(0x1f5)]());},_0x500414=_0x40b9f3=>{const _0x178eeb=_0x571d;if(!this[_0x178eeb(0x2a9)]||this['pointer']['id']!==_0x40b9f3[_0x178eeb(0x36c)])return;let _0x50a2e7=_0x40b9f3[_0x178eeb(0x2c8)]-this[_0x178eeb(0x2a9)]['x'],_0x534c4f=_0x40b9f3[_0x178eeb(0x470)]-this[_0x178eeb(0x2a9)]['y'];this['pointer']['x']=_0x40b9f3[_0x178eeb(0x2c8)],this['pointer']['y']=_0x40b9f3[_0x178eeb(0x470)],this['pointer'][_0x178eeb(0x25c)]?this[_0x178eeb(0x40a)][_0x178eeb(0x25c)](_0x50a2e7,_0x534c4f,this[_0x178eeb(0x29d)]['clientHeight']):this['volumeCamera'][_0x178eeb(0x2e3)](_0x50a2e7,_0x534c4f),this[_0x178eeb(0x419)](),this[_0x178eeb(0x464)]();},_0xc1e1a3=_0x5e9626=>{const _0x344ba0=_0x571d;this['pointer']?.['id']===_0x5e9626[_0x344ba0(0x36c)]&&(this[_0x344ba0(0x2a9)]=null,this['endInteraction'](_0x344ba0(0x34b)));},_0x208c08=_0x926679=>{const _0x484598=_0x571d;_0x926679[_0x484598(0x1f5)](),this['volumeCamera'][_0x484598(0x422)](_0x926679[_0x484598(0x387)]),this[_0x484598(0x419)](),this['requestRender']();},_0x32fb7a=_0x32ef9a=>_0x32ef9a[_0x31f668(0x1f5)]();this['interactionElement']['addEventListener']('pointerdown',_0x53c46c),this[_0x31f668(0x339)][_0x31f668(0x265)](_0x31f668(0x365),_0x500414),this['interactionElement'][_0x31f668(0x265)](_0x31f668(0x2be),_0xc1e1a3),this[_0x31f668(0x339)][_0x31f668(0x265)]('pointercancel',_0xc1e1a3),this['interactionElement']['addEventListener'](_0x31f668(0x1ba),_0x208c08,{'passive':!0x1}),this['interactionElement']['addEventListener'](_0x31f668(0x294),_0x32fb7a),this['eventDisposers'][_0x31f668(0x23d)](()=>this[_0x31f668(0x339)][_0x31f668(0x347)]('pointerdown',_0x53c46c),()=>this[_0x31f668(0x339)]['removeEventListener'](_0x31f668(0x365),_0x500414),()=>this[_0x31f668(0x339)][_0x31f668(0x347)](_0x31f668(0x2be),_0xc1e1a3),()=>this[_0x31f668(0x339)][_0x31f668(0x347)](_0x31f668(0x3d6),_0xc1e1a3),()=>this[_0x31f668(0x339)][_0x31f668(0x347)](_0x31f668(0x1ba),_0x208c08),()=>this['interactionElement'][_0x31f668(0x347)](_0x31f668(0x294),_0x32fb7a));}[_0x3a9ea2(0x3e7)](){const _0x2e8f4b=_0x3a9ea2;this[_0x2e8f4b(0x24e)][_0x2e8f4b(0x1d6)]({'xAxis':this[_0x2e8f4b(0x384)]['metadata'][_0x2e8f4b(0x1f2)],'yAxis':this[_0x2e8f4b(0x384)]['metadata'][_0x2e8f4b(0x42c)],'zAxis':this[_0x2e8f4b(0x384)]['metadata'][_0x2e8f4b(0x46c)],'brickWidth':this['layout'][_0x2e8f4b(0x1ab)][_0x2e8f4b(0x1cc)],'brickHeight':this[_0x2e8f4b(0x44b)][_0x2e8f4b(0x1ab)][_0x2e8f4b(0x22a)],'brickDepth':this[_0x2e8f4b(0x44b)][_0x2e8f4b(0x1ab)][_0x2e8f4b(0x30f)],'halo':0x1,'noData':this['source'][_0x2e8f4b(0x474)][_0x2e8f4b(0x268)]});}[_0x3a9ea2(0x47a)](){const _0x19e9d1=_0x3a9ea2;if(this[_0x19e9d1(0x42b)]===_0x19e9d1(0x478)){let _0x492296=_0x46fb2a(this[_0x19e9d1(0x384)]['metadata'],this[_0x19e9d1(0x36b)]);this['renderer'][_0x19e9d1(0x3a6)]({'modelMatrix':_0x492296['proxyModelMatrix'],'inverseModelMatrix':Array[_0x19e9d1(0x18d)](_0x50b8ae(_0x492296[_0x19e9d1(0x304)])),'geographicTransform':_0x492296[_0x19e9d1(0x18e)],'clipMinimum':[0x0,0x0,0x0],'clipMaximum':[0x1,0x1,0x1]}),this[_0x19e9d1(0x464)]();return;}let _0x45859e=_0x7388f0(this['baseModelMatrix'],this[_0x19e9d1(0x36b)]),_0x50786a=_0x221eb2(this['source'],this[_0x19e9d1(0x286)]);this['renderer'][_0x19e9d1(0x3a6)]({'modelMatrix':Array['from'](_0x45859e),'inverseModelMatrix':Array[_0x19e9d1(0x18d)](_0x50b8ae(_0x45859e)),'geographicTransform':null,'clipMinimum':_0x50786a[_0x19e9d1(0x23c)],'clipMaximum':_0x50786a[_0x19e9d1(0x1dd)]}),this[_0x19e9d1(0x464)]();}[_0x3a9ea2(0x2b1)](){const _0x355e63=_0x3a9ea2;let _0x217c18=this[_0x355e63(0x1cb)][_0x355e63(0x42f)](_0x28cfb5=>_0x2d42c9(_0x586fc3(_0x28cfb5,this[_0x355e63(0x384)][_0x355e63(0x474)]),this[_0x355e63(0x448)],this[_0x355e63(0x32c)],this[_0x355e63(0x330)]));this[_0x355e63(0x24e)]['setProfiles'](_0x217c18),this['requestRender']();}['resetBrickRequests'](){const _0x44ceda=_0x3a9ea2;this['sourceGeneration']+=0x1;for(let _0x22b698 of this[_0x44ceda(0x3e0)])_0x22b698[_0x44ceda(0x3d9)]();this[_0x44ceda(0x3e0)][_0x44ceda(0x33b)](),this[_0x44ceda(0x21a)][_0x44ceda(0x33b)](),this[_0x44ceda(0x2e4)]['clear'](),this[_0x44ceda(0x29c)]['clear'](),this[_0x44ceda(0x3e7)](),this['scheduleBricks']();}[_0x3a9ea2(0x419)](){const _0x3a873d=_0x3a9ea2;this[_0x3a873d(0x299)]=!0x0,this['requestRender']();}['flushBrickSchedule'](){const _0x48b752=_0x3a9ea2;this[_0x48b752(0x299)]&&(this[_0x48b752(0x299)]=!0x1,this['scheduleBricks']());}[_0x3a9ea2(0x185)](){const _0x35389f=_0x3a9ea2;if(this[_0x35389f(0x28a)])return;this['brickScheduleDirty']=!0x1,this[_0x35389f(0x342)]+=0x1;let _0x1f8574=this[_0x35389f(0x24e)][_0x35389f(0x2a4)][_0x35389f(0x2d0)];if(_0x1f8574<=0x0)return;let _0x2d3146=_0x1f8574>=this['descriptors']['length'];if(_0x2d3146&&this['desiredKeys']['size']===this[_0x35389f(0x361)][_0x35389f(0x2e8)]&&this[_0x35389f(0x21a)][_0x35389f(0x439)]===this[_0x35389f(0x361)]['length']&&this['pendingKeys'][_0x35389f(0x439)]===0x0)return;let _0x322102;_0x2d3146?_0x322102=this[_0x35389f(0x361)]:(this[_0x35389f(0x3bb)]+=0x1,_0x322102=[...this[_0x35389f(0x361)]][_0x35389f(0x351)]((_0x594aa0,_0x54233c)=>_0x3aed27(_0x594aa0,this[_0x35389f(0x384)],this['sliceState'],this[_0x35389f(0x1cb)])-_0x3aed27(_0x54233c,this[_0x35389f(0x384)],this['sliceState'],this[_0x35389f(0x1cb)])||_0x16e120(_0x594aa0,this['layout'],this['volumeCamera'][_0x35389f(0x465)])-_0x16e120(_0x54233c,this[_0x35389f(0x44b)],this[_0x35389f(0x40a)]['state']))[_0x35389f(0x212)](0x0,_0x1f8574));let _0x557ee5=new Set(_0x322102[_0x35389f(0x42f)](_0x5ec343=>_0x5ec343[_0x35389f(0x47b)]));this[_0x35389f(0x29c)]=_0x557ee5,_0x2d3146||this['renderer'][_0x35389f(0x35b)](_0x322102[_0x35389f(0x340)](_0x3c6d89=>this[_0x35389f(0x21a)][_0x35389f(0x3cf)](_0x3c6d89[_0x35389f(0x47b)]))[_0x35389f(0x42f)](_0x28bd24=>_0x3434ac(_0x28bd24,this[_0x35389f(0x44b)])));for(let _0x13c887 of this[_0x35389f(0x21a)])_0x557ee5[_0x35389f(0x3cf)](_0x13c887)||this[_0x35389f(0x21a)]['delete'](_0x13c887);let _0x22e22f=Math['max'](0x0,_0x3d8457(this[_0x35389f(0x181)]())-this[_0x35389f(0x2e4)][_0x35389f(0x439)]),_0x5f1b32=_0x322102[_0x35389f(0x340)](_0x69c099=>!this[_0x35389f(0x21a)][_0x35389f(0x3cf)](_0x69c099['key'])&&!this[_0x35389f(0x2e4)][_0x35389f(0x3cf)](_0x69c099[_0x35389f(0x47b)]))['slice'](0x0,_0x22e22f);for(let _0x4612dd of _0x5f1b32)this[_0x35389f(0x1fb)](_0x4612dd);}[_0x3a9ea2(0x1fb)](_0xcec3b3){const _0x282017=_0x3a9ea2;let _0x3046ca=this[_0x282017(0x2ff)],_0x40d727=this[_0x282017(0x384)],_0x184a5a=this[_0x282017(0x48d)],_0x2a65ce=new AbortController();this[_0x282017(0x3e0)][_0x282017(0x451)](_0x2a65ce),this[_0x282017(0x2e4)]['set'](_0xcec3b3[_0x282017(0x47b)],_0x3046ca),Promise[_0x282017(0x203)](_0x40d727[_0x282017(0x2d1)](_0x184a5a,_0xcec3b3[_0x282017(0x28d)],_0x2a65ce[_0x282017(0x39f)]))[_0x282017(0x481)](async _0x20086c=>{const _0x571964=_0x282017;if(this['destroyed']||_0x3046ca!==this[_0x571964(0x2ff)]||_0x40d727!==this[_0x571964(0x384)]||_0x184a5a!==this[_0x571964(0x48d)]||!this[_0x571964(0x29c)][_0x571964(0x3cf)](_0xcec3b3[_0x571964(0x47b)]))return;let _0xbbf72b=_0x2b3504(_0x40d727[_0x571964(0x474)],this['layout'][_0x571964(0x1ab)],_0xcec3b3,_0x20086c),_0x1170fb=_0x3434ac(_0xcec3b3,this[_0x571964(0x44b)]);await this[_0x571964(0x24e)][_0x571964(0x380)]({'logicalIndex':_0x1170fb,'values':_0xbbf72b}),!(this[_0x571964(0x28a)]||_0x3046ca!==this[_0x571964(0x2ff)]||_0x40d727!==this[_0x571964(0x384)]||_0x184a5a!==this[_0x571964(0x48d)]||!this['desiredKeys'][_0x571964(0x3cf)](_0xcec3b3[_0x571964(0x47b)]))&&(this[_0x571964(0x21a)]['add'](_0xcec3b3[_0x571964(0x47b)]),this[_0x571964(0x464)]());})[_0x282017(0x1d7)](_0x36622e=>{const _0x3c0bee=_0x282017;_0x36622e instanceof DOMException&&_0x36622e[_0x3c0bee(0x2b3)]==='AbortError'||console[_0x3c0bee(0x381)](_0x36622e);})[_0x282017(0x205)](()=>{const _0x243276=_0x282017;this[_0x243276(0x3e0)]['delete'](_0x2a65ce),this[_0x243276(0x2e4)]['get'](_0xcec3b3[_0x243276(0x47b)])===_0x3046ca&&this[_0x243276(0x2e4)]['delete'](_0xcec3b3[_0x243276(0x47b)]),_0x3046ca===this[_0x243276(0x2ff)]&&this[_0x243276(0x185)]();});}['handleFrameAvailable'](){const _0x5e691d=_0x3a9ea2;this[_0x5e691d(0x3b1)]&&this[_0x5e691d(0x464)]();}[_0x3a9ea2(0x464)](){const _0x4e8a22=_0x3a9ea2;this[_0x4e8a22(0x28a)]||(this[_0x4e8a22(0x3b1)]=!0x0,!(this[_0x4e8a22(0x2c4)]!==_0x4e8a22(0x1f9)||this[_0x4e8a22(0x44a)]!==0x0)&&(this['frameRequest']=requestAnimationFrame(()=>{const _0x47f340=_0x4e8a22;this[_0x47f340(0x44a)]=0x0,!(this[_0x47f340(0x28a)]||!this[_0x47f340(0x3b1)])&&this[_0x47f340(0x273)]();})));}};let _0x328177=_0x3317ee=>_0x302425[_0x3a9ea2(0x438)](_0x3317ee),_0xd495c7=(_0xf376f8,_0x5c70a2,_0x24b83e,_0x35d430)=>{const _0x3e1a97=_0x3a9ea2;if(!Number[_0x3e1a97(0x34f)](_0xf376f8)||!Number[_0x3e1a97(0x34f)](_0x5c70a2)||_0xf376f8<0x0||_0x5c70a2<=0x0||_0xf376f8+_0x5c70a2>_0x24b83e)throw Error(_0x35d430+_0x3e1a97(0x190)+_0xf376f8+_0x3e1a97(0x43a)+_0x5c70a2+',\x20size='+_0x24b83e+'.\x20'+_0x35d430+'\x20范围无效。');},_0x74b43e=(_0x116cce,_0x5eedb4)=>{const _0x203cd0=_0x3a9ea2;_0xd495c7(_0x5eedb4['xStart'],_0x5eedb4[_0x203cd0(0x243)],_0x116cce[_0x203cd0(0x1f2)][_0x203cd0(0x25f)],'X'),_0xd495c7(_0x5eedb4['levelStart'],_0x5eedb4[_0x203cd0(0x3f3)],_0x116cce[_0x203cd0(0x42c)][_0x203cd0(0x25f)],_0x203cd0(0x363)),_0xd495c7(_0x5eedb4['sourceYStart'],_0x5eedb4[_0x203cd0(0x189)],_0x116cce[_0x203cd0(0x46c)][_0x203cd0(0x25f)],'sourceY');},_0x1bfe99=_0x6c6a96=>{const _0x1e2ac6=_0x3a9ea2;_0x15d88c(_0x6c6a96);let _0x2b0066=_0x6c6a96[_0x1e2ac6(0x1f2)][_0x1e2ac6(0x25f)]*_0x6c6a96['yAxis'][_0x1e2ac6(0x25f)]*_0x6c6a96[_0x1e2ac6(0x46c)][_0x1e2ac6(0x25f)]*_0x6c6a96[_0x1e2ac6(0x45c)];if(_0x6c6a96[_0x1e2ac6(0x1a1)][_0x1e2ac6(0x2e8)]!==_0x2b0066)throw Error(_0x1e2ac6(0x2b0)+_0x2b0066+_0x1e2ac6(0x1aa)+_0x6c6a96[_0x1e2ac6(0x1a1)][_0x1e2ac6(0x2e8)]+'.\x20体积数据长度与维度不匹配。');};_0x5588ea[_0x3a9ea2(0x2c6)]=_0xbc1613,_0x5588ea['createGeographicVolumeLayout']=_0x46fb2a,_0x5588ea['createInMemoryVolumeSource']=_0x1afbd7=>{_0x1bfe99(_0x1afbd7);let {values:_0x16aff3,..._0x52e86c}=_0x1afbd7;return{'metadata':_0x52e86c,'readChunk'(_0x96b950,_0x383d2a,_0x4ed274){const _0x18f51c=_0x571d;if(_0x4ed274?.[_0x18f51c(0x47c)])throw new DOMException('Volume\x20chunk\x20request\x20was\x20aborted.\x20体积块请求已取消。',_0x18f51c(0x3bd));if(!Number[_0x18f51c(0x34f)](_0x96b950)||_0x96b950<0x0||_0x96b950>=_0x1afbd7[_0x18f51c(0x45c)])throw Error(_0x18f51c(0x1b8)+_0x96b950+_0x18f51c(0x3d8));_0x74b43e(_0x1afbd7,_0x383d2a);let _0x29e554=new Float32Array(_0x383d2a[_0x18f51c(0x243)]*_0x383d2a[_0x18f51c(0x3f3)]*_0x383d2a[_0x18f51c(0x189)]),_0x51b37a=_0x1afbd7[_0x18f51c(0x1f2)][_0x18f51c(0x25f)],_0x2d183d=_0x1afbd7[_0x18f51c(0x42c)][_0x18f51c(0x25f)],_0x38a805=_0x1afbd7['zAxis'][_0x18f51c(0x25f)],_0x1d4111=_0x96b950*_0x51b37a*_0x2d183d*_0x38a805;for(let _0x3dfea6=0x0;_0x3dfea6<_0x383d2a[_0x18f51c(0x189)];_0x3dfea6+=0x1)for(let _0x48dd66=0x0;_0x48dd66<_0x383d2a[_0x18f51c(0x3f3)];_0x48dd66+=0x1){let _0x510272=_0x1d4111+(((_0x383d2a['sourceYStart']+_0x3dfea6)*_0x2d183d+_0x383d2a['levelStart']+_0x48dd66)*_0x51b37a+_0x383d2a[_0x18f51c(0x3b3)]),_0x49d694=(_0x3dfea6*_0x383d2a[_0x18f51c(0x3f3)]+_0x48dd66)*_0x383d2a[_0x18f51c(0x243)];_0x29e554[_0x18f51c(0x46d)](_0x16aff3[_0x18f51c(0x2ef)](_0x510272,_0x510272+_0x383d2a['xCount']),_0x49d694);}return{'timeIndex':_0x96b950,'range':{..._0x383d2a},'width':_0x383d2a['xCount'],'height':_0x383d2a[_0x18f51c(0x3f3)],'depth':_0x383d2a['sourceYCount'],'values':_0x29e554};}};},_0x5588ea[_0x3a9ea2(0x21e)]=_0x328177,_0x5588ea[_0x3a9ea2(0x1b2)]=_0x195d5e,_0x5588ea[_0x3a9ea2(0x201)]=_0x246a6d,_0x5588ea[_0x3a9ea2(0x3cd)]=_0x1514cb;}));function _0x1214(){const _0x44818e=['sourceGeneration','startX','step','lockSlice','#fff','proxyModelMatrix','maximumDistance','brickHeight','getBindGroupLayout','draw','hitRadius','WebGPU\x20volume\x20frame\x20capture\x20failed:\x20','exp','WebGPU\x20volume\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积尺寸必须是正整数。','Failed\x20to\x20create\x20WebGPU\x20volume\x20pipelines:\x20','WebGPU\x20volume\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积绑定布局不可用。','depth','actualFrameIntervalMilliseconds','writeBuffer','notify','volumeBindGroup','container','webgpu','stopPropagation','lastFrameTimeMilliseconds','getContext','The\x20current\x20WebGPU\x20volume\x20atlas\x20requires\x20halo:\x201.\x20当前\x20WebGPU\x20体积图集要求\x20halo\x20为\x201。','slicePlateColor','destroyBuffers','center','colorValuesBuffer','createBindGroup','recreateSceneBindGroup','centerEcefScaled','pendingSliceSnapshot','cursor','beginRenderPass','setBindGroup','opacityValuesBuffer','configureSourceResources','WebGPU\x20volume\x20transfer\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积传递函数资源不完整。','getCanvas','resources','activePointer','sceneTrianglePipeline','opacityStops','padding','A\x20destroyed\x20volume\x20scene\x20cannot\x20capture\x20a\x20frame.\x20已销毁的体积场景不能读取帧。','\x20的\x20path\x20包含非有限坐标。','colorMode','minimumPitch','pushErrorScope','colorInputs','clientWidth','WebGPU\x20volume\x20atlas\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积图集布局不可用。','STORAGE','WebGPU\x20profile\x20resources\x20are\x20unavailable.\x20WebGPU\x20剖面资源不可用。','inverseViewProjection','interactionElement','kind','clear','volume\x20scene\x20bind\x20group','axisHysteresis','\x20的\x20values\x20长度与\x20path、heights\x20不匹配。','COPY_SRC','filter','parseInt','brickScheduleCount','aspect','\x20with\x20multiple\x20samples\x20must\x20have\x20a\x20non-zero\x20step.\x20','cachedSlices','onLimitReached','removeEventListener','axisDefinitions','Volume\x20slice\x20','.\x20创建\x20WebGPU\x20体积管线失败。','camera','createRenderPipeline','colorStopCount','amd','isInteger','bufferOffset','sort','generation','one','hitTolerance','memoryLimitBytes','2rBVmUQ','brickWidth','endY','createValues','applyHit','touchBricks','gap','initializing','mouse','axis','subscribe','descriptors','autoFrameCount','level','volume\x20scene\x20mesh\x20','pointermove','read-only-storage','setAttribute','maximumUploadBatchBytes','RENDER_ATTACHMENT','createLockedMarker','verticalScale','pointerId','Returned\x20volume\x20chunk\x20range\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块范围与请求不一致。','transferBindGroup','pointerType','residentBrickCount','geometryBindGroupLayout','viewportHeight','limits','opacityBuffer','createCommandEncoder','releasePointerCapture','volume\x20scene\x20geometry\x20pass','pointerdown','getInteractionKind','vertices','cachedProfiles','transferBindGroupLayout','depthTexture','ceil','updatePreview','uploadBrick','error','cacheOnSuccess','setTransfer','source','WebGPU\x20volume\x20resources\x20were\x20released.\x20WebGPU\x20体积资源已释放。','upload','deltaY','includes','bindControls','activeInteractions','coordinate','sourceYStart','premultiplied','FRAGMENT','WebGPU\x20volume\x20memory\x20limits\x20must\x20be\x20positive.\x20WebGPU\x20体积显存限制必须大于零。','uploadStagingBufferSize','normalizationMeters','volume\x20slice\x20','interactionRenderScale','encodePreparedBrickUpload','copyTextureToBuffer','panSpeed','\x20的\x20heights\x20包含非有限高度。','display','densityScale','viewportWidth','sliceResources','initialize','volume\x20atlas\x20clear\x20shader','\x20position\x20must\x20be\x20normalized\x20to\x20zero\x20through\x20one.\x20体积切面位置必须归一化到零至一。','signal','clearLockedSlices','getSceneParamsBuffer','exports','sliceDepthMode','volumeBindGroupLayout','topology','update','\x20noData\x20must\x20be\x20finite\x20or\x20NaN.\x20','indices','residentByLogicalIndex','setFrameAvailableCallback','sceneBindGroup','budgetLimited','resourceRebuildCount','setTimeIndex','cameraPosition','composite','renderDirty','transparent','xStart','autoQuality','Volume\x20chunk\x20','geometryBindGroup','WebGPU\x20volume\x20atlas\x20is\x20not\x20configured.\x20WebGPU\x20体积图集尚未配置。','destroyResources','setCamera','getCurrentTexture','brickSortCount','balanced','AbortError','lockPreview','slotCountY','rowsPerImage','volume\x20scene\x20depth','none','VERTEX','textContent','\x20must\x20contain\x20position\x20and\x20RGBA\x20values\x20for\x20every\x20vertex.\x20场景网格顶点必须包含位置和\x20RGBA。','volume\x20atlas\x20bind\x20group\x20layout','queue','high-performance','createComputePipeline','halo','\x20的\x20path\x20必须包含至少两个\x20[x,\x20z]\x20点。','removeSlice','volumeAxisValueToNormalized','volume\x20brick\x20atlas\x20','has','coreSampleCount','The\x20maximum\x20locked\x20slice\x20count\x20has\x20been\x20reached.\x20已达到最大锁定切面数量。','rgb(','smooth','prepareBrickUpload','volumeDimFactor','pointercancel','WebGPU\x20geometry\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20几何绑定布局不可用。','.\x20体积\x20timeIndex\x20越界。','abort','slices','volume\x20atlas\x20clear\x20pipeline','setPointerCapture','colorBuffer','atlasViews','resize','requestControllers','syncPreview','createTextNode','bindSliceInteraction','overlayTrianglePipeline','toFixed','encodeScenePass','configureSource','previousAxis','min','\x20包含多个采样点时步长不能为零。','occupied','volume\x20transfer\x20bind\x20group\x20layout','userSelect','listeners','正交相机高度和宽高比必须大于\x200。','atlas','getAtlas','viewProjection','levelCount','pixelRatioCap','revision','maximumPitch','object','capacity','element','shift','beginComputePass','device','some','Volume\x20X\x20axis','encodeVolumePass','WebGPU\x20volume\x20device\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20device\x20尚未初始化。','clipMaximum','updateSlice','heightScaled','less','29772FIgetk','r32float','无法归一化长度为零的三维向量。','minimumPitchDegrees','WRITE','volumeCamera','createPipelineLayout','minimumDistance','captureFrame','\x20轴必须包含两个不同的有限端点。','getEffectiveRenderScale','Geographic\x20volume\x20normalization\x20must\x20be\x20a\x20positive\x20finite\x20distance.\x20地理体积归一化尺度必须是正有限距离。','2130145kbzJcx','load','writeVolumeParams','\x20必须是非负有限数值。','getAtlasTexture','570731drHGZO','atan2','opacityStopCount','requestBrickSchedule','相机裁剪距离必须满足\x200\x20<=\x20near\x20<\x20far。','skippedCells','volume\x20metadata\x20params','createShaderModule','onSubmittedWorkDone','Volume','rgb\x20颜色通道数量不正确:\x20','destroy','dolly','inherit','Volume\x20opacity\x20must\x20be\x20within\x20[0,\x201].\x20体积透明度必须位于\x20[0,\x201]。','quality','logicalBrickCount','sliceState','Volume\x20color\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积颜色色标必须按数值升序排列。','createView','handlePointerUp','coordinateSystem','yAxis','Volume\x20opacity\x20stop\x20values\x20must\x20be\x20finite\x20and\x20strictly\x20increasing.\x20体积透明度节点值必须有限且严格递增。','bindGroup','map','brickDepth','value','STORAGE_BINDING','\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20','previewMarker','verticalScale\x20必须是大于\x200\x20的有限数。','切面轴端点必须是有限数。','WebGPU\x20volume\x20atlas\x20texture\x20is\x20unavailable.\x20WebGPU\x20体积图集纹理不可用。','create','size',',\x20count=','Failed\x20to\x20create\x20a\x20WebGPU\x20canvas\x20context\x20for\x20the\x20volume\x20scene.\x20无法为体积场景创建\x20WebGPU\x20Canvas\x20上下文。','frameInFlight','next','4px','submittedFrameCount','不支持的\x20rgb\x20颜色格式:\x20','volume-axes','message','interactionStepScale','\x20的\x20opacity\x20必须位于\x200\x20到\x201。','relative','valuesEqual','prepared','colorStops','103659vwShQL','frameRequest','layout','nowrap','performance','writeParams','struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VertexOutput\x20{\x0a\x20\x20\x20\x20@builtin(position)\x20position:\x20vec4f,\x0a\x20\x20\x20\x20@location(0)\x20color:\x20vec4f,\x0a}\x0a\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneParams;\x0a\x0afn\x20transformScenePosition(position:\x20vec3f)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20scene.viewProjection\x20*\x20scene.modelMatrix\x20*\x20vec4f(position,\x201.0);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20mix(scene.geographic1.z,\x20scene.geographic1.w,\x20position.x);\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20mix(scene.geographic2.x,\x20scene.geographic2.y,\x20position.z);\x0a\x20\x20\x20\x20let\x20height\x20=\x20mix(scene.geographic2.z,\x20scene.geographic2.w,\x20position.y);\x0a\x20\x20\x20\x20let\x20latitudeSin\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20let\x20latitudeCos\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20let\x20semiMajor\x20=\x20scene.geographic1.x;\x0a\x20\x20\x20\x20let\x20semiMinor\x20=\x20scene.geographic1.y;\x0a\x20\x20\x20\x20let\x20eccentricitySquared\x20=\x201.0\x20-\x20semiMinor\x20*\x20semiMinor\x20/\x20(semiMajor\x20*\x20semiMajor);\x0a\x20\x20\x20\x20let\x20primeVerticalRadius\x20=\x20semiMajor\x20/\x20sqrt(1.0\x20-\x20eccentricitySquared\x20*\x20latitudeSin\x20*\x20latitudeSin);\x0a\x20\x20\x20\x20let\x20ecef\x20=\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20cos(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20sin(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20*\x20(1.0\x20-\x20eccentricitySquared)\x20+\x20height)\x20*\x20latitudeSin\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20scene.viewProjection\x20*\x20vec4f(ecef\x20-\x20scene.geographic0.yzw,\x201.0);\x0a}\x0a\x0a@vertex\x0afn\x20vertexMain(@location(0)\x20position:\x20vec3f,\x20@location(1)\x20color:\x20vec4f)\x20->\x20VertexOutput\x20{\x0a\x20\x20\x20\x20return\x20VertexOutput(transformScenePosition(position),\x20color);\x0a}\x0a\x0a@fragment\x0afn\x20fragmentMain(input:\x20VertexOutput)\x20->\x20@location(0)\x20vec4f\x20{\x0a\x20\x20\x20\x20return\x20vec4f(input.color.rgb\x20*\x20input.color.a,\x20input.color.a);\x0a}\x0a','.\x20体积时间索引越界。','add','getTransferBindGroupLayout','mapAsync','plateColor','requestAdapter','getUploadStagingBuffer','countZ','切面轴采样数必须是正整数。','unconfigure','frameIndex','showDebugGeometry','timeCount','onInteractionEnd','Volume\x20opacity\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积透明度色标必须按数值升序排列。','volume\x20slice\x20shader','1390YnbEco','uniformUpdateCount','depthMode','WebGPU\x20axis\x20resources\x20are\x20unavailable.\x20WebGPU\x20轴线资源不可用。','requestRender','state','lost','fill','grab','initializationGeneration','baseModelMatrix','RGB\x20颜色通道必须在\x200\x20~\x20255\x20之间','zAxis','set','hasPointerCapture','counts','clientY','recordFrameInterval','volume\x20opacity\x20stop\x20alphas','initialized','metadata','volume\x20geometry\x20bind\x20group\x20layout','sin','WebGPU\x20transfer\x20resources\x20are\x20unavailable.\x20WebGPU\x20传递函数资源不可用。','geographic-wgs84','\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20','configureModel','key','aborted','updateTransferResources','buffer','isSafeInteger','nextId','then','相机宽高比必须大于\x200。','far','font','setVertexBuffer','valueScale','MAP_READ','processBrickUploads','entries','WebGPU\x20volume\x20scene\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积场景尺寸必须是正整数。','volume\x20atlas\x20clear\x20pass','reject','timeIndex','byteOffset','volume\x20brick\x20upload\x20batch\x20flush','M4WVolumeScene','slotCountZ','validation','createLayout','endX','minZ','near','drawMeshes','countY','range','residentBySlotIndex','volumeMetadata','getEffectiveQuality','slotIndex','sqrt','cacheBrickUpload','scheduleBricks','line-list','透视相机视场角必须位于\x200\x20到\x20180\x20度之间。','volumePipeline','sourceYCount','sceneLinePipeline','Volume\x20brick\x20upload\x20became\x20stale.\x20体积砖上传已过期。','options','from','transform','requestDevice','\x20range\x20is\x20invalid:\x20start=','WebGPU\x20transfer\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20传递函数绑定布局不可用。','rgba(','target','startsWith','background','getFrame','切面深度模式无效\x20/\x20Slice\x20depth\x20mode\x20is\x20invalid','lifecycleState','acquireSlot','uploadBatchCount','clearPreview','createProjectionMatrix','sceneSlicePipeline','touch','cachedBricks','getAttachments','values','setSlices','lastSubmittedFrameTimestamp','projection','pageTableBuffer','overlaySlicePipeline','相机裁剪距离必须满足\x200\x20<\x20near\x20<\x20far。','fragmentMain','setSliceTool','\x20values\x20but\x20received\x20','shape','max','overlayLinePipeline','abs','coreRange','endsWith','rejectPendingBrickUploads','ecefToGeographicVolumeLocal','.\x20体积砖块数据长度不正确。','endInteraction','float32x4','getMappedRange','mode','Volume\x20timeIndex\x20is\x20out\x20of\x20range:\x20','MAP_WRITE','wheel','getAxisResources','WebGPU\x20scene\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20场景参数\x20Buffer\x20不可用。','0\x202px','getVolumeParamsBuffer','style','markerOverlay','pendingBrickUploads','one-minus-src-alpha','createBindGroupLayout','keys','splice','div','Returned\x20volume\x20chunk\x20dimensions\x20do\x20not\x20match\x20its\x20range.\x20返回体积分块尺寸与范围不一致。','frameAvailableCallback','handleFrameAvailable','inverseModelMatrix','profiles','width','Volume\x20Y\x20axis','profileResources','clientHeight','clearPageEntry','路线剖面\x20','position','hypot','renderScale','configure','setSource','catch','stepLength','axes','toolMode','getPageTableBuffer','levelStart','maximum','borderRadius','cachedAxes','modelMatrix','distance','idle','overlayContainer','submit','logicalIndex','alignItems','end','find','interactionController','不支持的\x20hex\x20颜色格式:\x20','visible','setState','maxZ','.\x20最大锁定切面数量为\x20','geographicTransform','getSliceResources','volume\x20slice\x20bind\x20group\x20layout','xAxis','getPreferredCanvasFormat','COPY_DST','preventDefault','rotateSpeed','pointerEvents','cameraState','managed','finish','loadBrick','0.72','\x20端点必须是有限数值。','Volume\x20valueScale\x20must\x20be\x20finite.\x20体积\x20valueScale\x20必须是有限数值。','568626sVDgnV','append','normalizedToVolumeAxisValue','BYTES_PER_ELEMENT','resolve','countX','finally','tan','sceneBindGroupLayout','depthView','eventDisposers','toStringTag','snapshot','enqueueBrickUpload','formatPosition','fovYDegrees','createSliceState','路线剖面\x20id\x20不能为空。','lockedSlices','slice','createGpuResources','updateAutoQuality','UNIFORM','orthographic','translate(-50%,\x20-100%)','createPipelines','previousContainerPosition','loadedKeys','Longitude\x20/\x20经度','getGeometryBindGroupLayout','hideAllMarkers','createVolumeScene','个色标范围的\x20min\x20必须小于\x20max','positions','scene','viewProjectionMatrix','attachments','color','volumeParamsBuffer','\x20必须是正整数。','onSlicesChange','dispatchWorkgroups','gpu','height','locked','findIndex','resetBrickRequests','volume\x20raymarch\x20pass','lastUsedFrame','positionMarker','Volume\x20brick\x20','WebGPU\x20volume\x20context\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20context\x20尚未初始化。','zoomSpeed','memoryHardLimitBytes','sceneParamsBuffer','minY','createElement','powerPreference','start','absolute','heights','minimum','push','opacity','updateLockedSlice','\x20无效。','asin','createBuffer','xCount','Volume\x20chunk\x20requires\x20','latitudeRadians','whiteSpace','matrices','floor','depth32float','WebGPU\x20is\x20required\x20for\x20the\x20volume\x20scene\x20but\x20is\x20unavailable.\x20体积场景需要\x20WebGPU,但当前环境不可用。','colorStops\x20不能为空','getSliceBindGroupLayout','bindSliceState','renderer','getDevice','firstChild','.\x20体积逻辑砖块索引无效。','READ','currentPreview','encodeOverlayPass','delete','beginInteraction','slotCountX','WebGPU\x20volume\x20bricks\x20require\x20halo\x201.\x20WebGPU\x20体积砖块要求\x20halo\x20为\x201。','getVolumeBindGroupLayout','transferResources','getSceneBindGroupLayout','pan','volume\x20scene\x20mesh\x20shader','mixed','count','setProjectionType','match','flushSliceState','\x20count','flatMap','addEventListener','handlePointerMove','volume\x20scene\x20params','noData','toUpperCase','navigationMode','button','clipMinimum','bytesPerRow','beginLockedSliceDrag','maxLockedSlices','flushBrickSchedule','\x20is\x20invalid:\x20','skippedSamples','render','syncLockedMarkers','onInteractionStart','volume\x20frame\x20capture','cos','Module','unsubscribe','Volume\x20chunk\x20range\x20exceeds\x20source\x20dimensions.\x20体积分块范围超出源数据尺寸。','\x20必须是正有限数值。','skippedSampleCount','uploadPump','copyBufferToTexture','Maximum\x20locked\x20slice\x20count\x20is\x20','auto','store','isInteracting','getProfileResources','path','border','clipBox','handlePointerDown','perspective','cartesian','destroyed','scheduleUploadPump','\x0a@group(0)\x20@binding(0)\x20var\x20atlas:\x20texture_storage_3d<r32float,\x20write>;\x0a\x0a@compute\x20@workgroup_size(4,\x204,\x204)\x0afn\x20main(@builtin(global_invocation_id)\x20invocation:\x20vec3u)\x20{\x0a\x20\x20\x20\x20let\x20dimensions\x20=\x20textureDimensions(atlas);\x0a\x20\x20\x20\x20if\x20(all(invocation\x20<\x20dimensions))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20textureStore(atlas,\x20vec3i(invocation),\x20vec4f(0.0));\x0a\x20\x20\x20\x20}\x0a}\x0a','readRange','unmap','autoFrameIntervalTotal','WebGPU\x20scene\x20attachments\x20are\x20unavailable.\x20WebGPU\x20场景附件不可用。','2859760RMtGzm','memoryTargetBytes','atlasLayout','contextmenu','uploadGeneration','setPipeline','.\x20体积分块\x20','releaseGpuResources','brickScheduleDirty','centerEcef','triangle-list','desiredKeys','canvas','WebGPU\x20volume\x20canvas\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20Canvas\x20尚未初始化。','sceneDepthView','volumeDimFactor\x20必须位于\x200\x20到\x201。','sliceBindGroupLayout','\x20noData\x20必须是有限数值或\x20NaN。','volume\x20brick\x20reusable\x20upload\x20staging','statistics','uploadStagingBuffer','main','byteLength','get','pointer','setAspect','popErrorScope','wgs84','trim','volume\x20brick\x20page\x20table','chunk','Volume\x20requires\x20','rebuildProfiles','function','name','clearAtlasTexture','uniform','slotCount','context','round','remove','isFinite','drawSlices','矩阵不可逆。','volume-slice-','pointerup','aria-label','struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VolumeParams\x20{\x0a\x20\x20\x20\x20dimensions:\x20vec4u,\x0a\x20\x20\x20\x20brickInterior:\x20vec4u,\x0a\x20\x20\x20\x20brickCount:\x20vec4u,\x0a\x20\x20\x20\x20atlasSlots:\x20vec4u,\x0a\x20\x20\x20\x20atlasDimensions:\x20vec4u,\x0a\x20\x20\x20\x20valueMeta:\x20vec4f,\x0a}\x0a\x0astruct\x20PageTable\x20{\x20values:\x20array<vec4u>\x20}\x0astruct\x20FloatValues\x20{\x20values:\x20array<f32>\x20}\x0astruct\x20Colors\x20{\x20values:\x20array<vec4f>\x20}\x0astruct\x20SliceParams\x20{\x0a\x20\x20\x20\x20data:\x20vec4f,\x0a\x20\x20\x20\x20plateColor:\x20vec4f,\x0a}\x0astruct\x20VolumeSample\x20{\x20value:\x20f32,\x20valid:\x20bool\x20}\x0a\x0astruct\x20SliceVertexOutput\x20{\x0a\x20\x20\x20\x20@builtin(position)\x20position:\x20vec4f,\x0a\x20\x20\x20\x20@location(0)\x20modelPosition:\x20vec3f,\x0a}\x0a\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneParams;\x0a@group(1)\x20@binding(0)\x20var\x20volumeAtlas0:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(1)\x20var\x20volumeAtlas1:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(2)\x20var\x20volumeAtlas2:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(3)\x20var\x20volumeAtlas3:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(4)\x20var\x20volumeAtlas4:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(5)\x20var\x20volumeAtlas5:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(6)\x20var\x20volumeAtlas6:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(7)\x20var\x20volumeAtlas7:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(8)\x20var<storage,\x20read>\x20pageTable:\x20PageTable;\x0a@group(1)\x20@binding(9)\x20var<uniform>\x20volume:\x20VolumeParams;\x0a@group(2)\x20@binding(0)\x20var<storage,\x20read>\x20colorStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(1)\x20var<storage,\x20read>\x20colorStopColors:\x20Colors;\x0a@group(2)\x20@binding(2)\x20var<storage,\x20read>\x20opacityStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(3)\x20var<storage,\x20read>\x20opacityStopAlphas:\x20FloatValues;\x0a@group(3)\x20@binding(0)\x20var<uniform>\x20slice:\x20SliceParams;\x0a\x0afn\x20invalidVolumeSample()\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(0.0,\x20false);\x0a}\x0a\x0afn\x20validVolumeSample(value:\x20f32)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(value,\x20true);\x0a}\x0a\x0afn\x20getPageIndex(brick:\x20vec3u)\x20->\x20u32\x20{\x0a\x20\x20\x20\x20return\x20brick.x\x20+\x20brick.y\x20*\x20volume.brickCount.x\x20+\x20brick.z\x20*\x20volume.brickCount.x\x20*\x20volume.brickCount.y;\x0a}\x0a\x0afn\x20getSlotCoordinate(slotIndex:\x20u32)\x20->\x20vec3u\x20{\x0a\x20\x20\x20\x20let\x20layerSize\x20=\x20volume.atlasSlots.x\x20*\x20volume.atlasSlots.y;\x0a\x20\x20\x20\x20let\x20z\x20=\x20slotIndex\x20/\x20layerSize;\x0a\x20\x20\x20\x20let\x20remainder\x20=\x20slotIndex\x20-\x20z\x20*\x20layerSize;\x0a\x20\x20\x20\x20let\x20y\x20=\x20remainder\x20/\x20volume.atlasSlots.x;\x0a\x20\x20\x20\x20return\x20vec3u(remainder\x20-\x20y\x20*\x20volume.atlasSlots.x,\x20y,\x20z);\x0a}\x0a\x0afn\x20loadAtlasValue(atlasIndex:\x20u32,\x20coordinate:\x20vec3i)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x200u)\x20{\x20return\x20textureLoad(volumeAtlas0,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x201u)\x20{\x20return\x20textureLoad(volumeAtlas1,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x202u)\x20{\x20return\x20textureLoad(volumeAtlas2,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x203u)\x20{\x20return\x20textureLoad(volumeAtlas3,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x204u)\x20{\x20return\x20textureLoad(volumeAtlas4,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x205u)\x20{\x20return\x20textureLoad(volumeAtlas5,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x206u)\x20{\x20return\x20textureLoad(volumeAtlas6,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20return\x20textureLoad(volumeAtlas7,\x20coordinate,\x200).r;\x0a}\x0a\x0afn\x20loadAtlasVoxel(voxel:\x20vec3i,\x20owningBrick:\x20vec3u)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20page\x20=\x20pageTable.values[getPageIndex(owningBrick)];\x0a\x0a\x20\x20\x20\x20if\x20(page.x\x20==\x200u\x20||\x20page.z\x20==\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20physicalBrick\x20=\x20volume.brickInterior.xyz\x20+\x20vec3u(2u);\x0a\x20\x20\x20\x20let\x20slot\x20=\x20getSlotCoordinate(page.x\x20-\x201u);\x0a\x20\x20\x20\x20let\x20local\x20=\x20voxel\x20-\x20vec3i(owningBrick\x20*\x20volume.brickInterior.xyz)\x20+\x20vec3i(1);\x0a\x20\x20\x20\x20let\x20value\x20=\x20loadAtlasValue(page.w,\x20vec3i(slot\x20*\x20physicalBrick)\x20+\x20local);\x0a\x0a\x20\x20\x20\x20if\x20(value\x20!=\x20value\x20||\x20(volume.valueMeta.y\x20>\x200.5\x20&&\x20value\x20==\x20volume.valueMeta.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20validVolumeSample(value);\x0a}\x0a\x0afn\x20sampleVolume(modelPosition:\x20vec3f)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(modelPosition,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20normalized\x20*\x20vec3f(volume.dimensions.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20baseVoxel\x20=\x20vec3i(floor(voxel));\x0a\x20\x20\x20\x20let\x20nextVoxel\x20=\x20min(baseVoxel\x20+\x20vec3i(1),\x20vec3i(volume.dimensions.xyz\x20-\x20vec3u(1u)));\x0a\x20\x20\x20\x20let\x20fraction\x20=\x20voxel\x20-\x20vec3f(baseVoxel);\x0a\x20\x20\x20\x20let\x20owningBrick\x20=\x20min(vec3u(baseVoxel)\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20c000\x20=\x20loadAtlasVoxel(baseVoxel,\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c100\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c010\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c110\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c001\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c101\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c011\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c111\x20=\x20loadAtlasVoxel(nextVoxel,\x20owningBrick);\x0a\x0a\x20\x20\x20\x20if\x20(!c000.valid\x20||\x20!c100.valid\x20||\x20!c010.valid\x20||\x20!c110.valid\x20||\x20!c001.valid\x20||\x20!c101.valid\x20||\x20!c011.valid\x20||\x20!c111.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20bottom\x20=\x20mix(mix(c000.value,\x20c100.value,\x20fraction.x),\x20mix(c010.value,\x20c110.value,\x20fraction.x),\x20fraction.y);\x0a\x20\x20\x20\x20let\x20top\x20=\x20mix(mix(c001.value,\x20c101.value,\x20fraction.x),\x20mix(c011.value,\x20c111.value,\x20fraction.x),\x20fraction.y);\x0a\x20\x20\x20\x20return\x20validVolumeSample(mix(bottom,\x20top,\x20fraction.z));\x0a}\x0a\x0afn\x20sampleColor(value:\x20f32)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.x);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20colorStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20colorStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20colorStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(colorStopColors.values[index],\x20colorStopColors.values[index\x20+\x201u],\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20colorStopColors.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20sampleOpacity(value:\x20f32)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.y);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20opacityStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20opacityStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20opacityStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(opacityStopAlphas.values[index],\x20opacityStopAlphas.values[index\x20+\x201u],\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20opacityStopAlphas.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20getPlanePosition(axis:\x20u32,\x20planePosition:\x20f32,\x20corner:\x20vec2f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(axis\x20==\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec3f(planePosition,\x20corner.x,\x20corner.y);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(axis\x20==\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec3f(corner.x,\x20planePosition,\x20corner.y);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20vec3f(corner.x,\x20corner.y,\x20planePosition);\x0a}\x0a\x0afn\x20getCorner(vertexIndex:\x20u32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20let\x20corners\x20=\x20array<vec2f,\x206>(\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec2f(0.0,\x200.0),\x20vec2f(1.0,\x200.0),\x20vec2f(0.0,\x201.0),\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec2f(0.0,\x201.0),\x20vec2f(1.0,\x200.0),\x20vec2f(1.0,\x201.0)\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20corners[vertexIndex];\x0a}\x0a\x0afn\x20getTessellatedCorner(vertexIndex:\x20u32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20let\x20gridSize\x20=\x2032u;\x0a\x20\x20\x20\x20let\x20cellIndex\x20=\x20vertexIndex\x20/\x206u;\x0a\x20\x20\x20\x20let\x20cellX\x20=\x20cellIndex\x20%\x20gridSize;\x0a\x20\x20\x20\x20let\x20cellY\x20=\x20cellIndex\x20/\x20gridSize;\x0a\x20\x20\x20\x20return\x20(vec2f(f32(cellX),\x20f32(cellY))\x20+\x20getCorner(vertexIndex\x20%\x206u))\x20/\x20f32(gridSize);\x0a}\x0a\x0afn\x20volumeToWorld(position:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20transformed\x20=\x20scene.modelMatrix\x20*\x20vec4f(position,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20transformed.xyz\x20/\x20transformed.w;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20mix(scene.geographic1.z,\x20scene.geographic1.w,\x20position.x);\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20mix(scene.geographic2.x,\x20scene.geographic2.y,\x20position.z);\x0a\x20\x20\x20\x20let\x20height\x20=\x20mix(scene.geographic2.z,\x20scene.geographic2.w,\x20position.y);\x0a\x20\x20\x20\x20let\x20latitudeSin\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20let\x20latitudeCos\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20let\x20semiMajor\x20=\x20scene.geographic1.x;\x0a\x20\x20\x20\x20let\x20semiMinor\x20=\x20scene.geographic1.y;\x0a\x20\x20\x20\x20let\x20eccentricitySquared\x20=\x201.0\x20-\x20semiMinor\x20*\x20semiMinor\x20/\x20(semiMajor\x20*\x20semiMajor);\x0a\x20\x20\x20\x20let\x20primeVerticalRadius\x20=\x20semiMajor\x20/\x20sqrt(1.0\x20-\x20eccentricitySquared\x20*\x20latitudeSin\x20*\x20latitudeSin);\x0a\x20\x20\x20\x20let\x20ecef\x20=\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20cos(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20sin(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20*\x20(1.0\x20-\x20eccentricitySquared)\x20+\x20height)\x20*\x20latitudeSin\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20ecef\x20-\x20scene.geographic0.yzw;\x0a}\x0a\x0a@vertex\x0afn\x20vertexMain(@builtin(vertex_index)\x20vertexIndex:\x20u32)\x20->\x20SliceVertexOutput\x20{\x0a\x20\x20\x20\x20let\x20modelPosition\x20=\x20getPlanePosition(u32(slice.data.x),\x20slice.data.y,\x20getTessellatedCorner(vertexIndex));\x0a\x20\x20\x20\x20let\x20clipPosition\x20=\x20scene.viewProjection\x20*\x20vec4f(volumeToWorld(modelPosition),\x201.0);\x0a\x20\x20\x20\x20return\x20SliceVertexOutput(clipPosition,\x20modelPosition);\x0a}\x0a\x0a@fragment\x0afn\x20fragmentMain(input:\x20SliceVertexOutput)\x20->\x20@location(0)\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20sample\x20=\x20sampleVolume(input.modelPosition);\x0a\x20\x20\x20\x20let\x20plateAlpha\x20=\x20slice.plateColor.a;\x0a\x20\x20\x20\x20let\x20platePremultiplied\x20=\x20slice.plateColor.rgb\x20*\x20plateAlpha;\x0a\x0a\x20\x20\x20\x20if\x20(!sample.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(plateAlpha\x20<=\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec4f(platePremultiplied,\x20plateAlpha);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20color\x20=\x20sampleColor(sample.value);\x0a\x20\x20\x20\x20let\x20alpha\x20=\x20color.a\x20*\x20sampleOpacity(sample.value)\x20*\x20slice.data.z;\x0a\x20\x20\x20\x20//\x20彩色数据覆盖白色透明底板,二者在同一\x20fragment\x20中合成以避免重合面的深度冲突。\x0a\x20\x20\x20\x20//\x20Colored\x20data\x20is\x20composited\x20over\x20the\x20translucent\x20white\x20plate\x20in\x20one\x20fragment\x20to\x20avoid\x20coplanar\x20depth\x20conflicts.\x0a\x20\x20\x20\x20let\x20outputAlpha\x20=\x20alpha\x20+\x20plateAlpha\x20*\x20(1.0\x20-\x20alpha);\x0a\x20\x20\x20\x20let\x20outputColor\x20=\x20color.rgb\x20*\x20alpha\x20+\x20platePremultiplied\x20*\x20(1.0\x20-\x20alpha);\x0a\x20\x20\x20\x20return\x20vec4f(outputColor,\x20outputAlpha);\x0a}\x0a','setAxes','unfilterable-float','Volume\x20opacity\x20stops\x20must\x20be\x20between\x20zero\x20and\x20one.\x20体积透明度色标必须位于零到一之间。','renderMode','Alpha\x20颜色通道必须在0\x20~\x201之间','VolumeCamera','always-visible','clientX','isNaN','.\x20WebGPU\x20体积帧读取失败。','WebGPU\x20volume\x20device\x20was\x20lost:\x20','markers','format','findAxisHit','uploadedBrickCount','atlasCapacity','readChunk','hitTolerancePixels','4oEXymA','verticalScale\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20verticalScale\x20必须是大于\x200\x20的有限数。','adapter','onSliceError','atlasTextures','external','正交相机高度必须大于\x200。','axisResources','left','setToolMode','normalizedPosition','WebGPU\x20volume\x20page\x20table\x20is\x20unavailable.\x20WebGPU\x20体积页表不可用。','\x20must\x20be\x20a\x20non-negative\x20finite\x20value.\x20','lastTimingFrameTimestamp','pointerleave','vertexMain','orbit','pendingKeys','forEach','Scene\x20mesh\x20','sliceInteraction','length','replace','2704098kTHeYz','删除切面','handleWindowPointerMove','sliceId','setProfiles','subarray','pageTableValues','getFormat','now','writePageEntry','semiMajorAxisScaled','type','preview','Volume\x20brick\x20halo\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20halo\x20必须是正整数。','WebGPU\x20volume\x20renderer\x20is\x20not\x20ready\x20for\x20frame\x20capture.\x20WebGPU\x20体积渲染器尚不能读取帧。','startY','getStepLength','\x20requires\x20','ready','bgra8unorm','createResource'];_0x1214=function(){return _0x44818e;};return _0x1214();}
|
|
1
|
+
function _0x18f2(){const _0x585181=['getProfileResources','mixed','normalizationMeters','相机裁剪距离必须满足\x200\x20<\x20near\x20<\x20far。','WebGPU\x20volume\x20device\x20restoration\x20failed.\x20WebGPU\x20体积设备恢复失败。','透视相机视场角必须位于\x200\x20到\x20180\x20度之间。','float32x4','type','axisDefinitions','eventDisposers','setTimeIndex','preview','atan2','WebGPU\x20volume\x20atlas\x20is\x20not\x20configured.\x20WebGPU\x20体积图集尚未配置。','cameraState','lastFrameTimeMilliseconds','background','atlasViews','rgb(17\x2024\x2039\x20/\x2082%)','xStart','.\x20体积数据长度与维度不匹配。','metadata','VolumeCamera','lockPreview','10683009vPHIcA','Volume\x20slice\x20ID\x20','frameInFlight','all','volume\x20atlas\x20clear\x20pass','match','\x20的\x20values\x20长度与\x20path、heights\x20不匹配。','unmap','colorValuesBuffer','volumeAxisValueToNormalized','Volume\x20chunk\x20range\x20exceeds\x20source\x20dimensions.\x20体积分块范围超出源数据尺寸。','grab','\x20must\x20contain\x20position\x20and\x20RGBA\x20values\x20for\x20every\x20vertex.\x20场景网格顶点必须包含位置和\x20RGBA。','createRenderPipeline','centerEcef','uploadStagingBuffer','configureSourceResources','\x20必须是非负有限数值。','opacityValuesBuffer','memoryTargetBytes','update','\x20endpoints\x20must\x20be\x20finite.\x20','skippedSamples','memoryLimitBytes','getStepLength','sourceYCount','volume\x20scene\x20geometry\x20pass','\x20轴必须包含两个不同的有限端点。','scene','.\x20WebGPU\x20体积设备已丢失。','inherit','values','append','ecefToGeographicVolumeLocal','markers','finally','proxyModelMatrix','不支持的\x20hex\x20颜色格式:\x20','resetBrickRequests','pan','remove','capacity','cursor','createTexture','none','clear','noData','sliceBindGroupLayout','Geographic\x20WGS84\x20volume\x20scenes\x20manage\x20their\x20own\x20model\x20transform.\x20WGS84\x20地理体积场景自行管理模型变换。','render','colorInputs','overlayContainer','minimum','positionMarker','devicePixelRatio','rotateSpeed','brickScheduleDirty','length','mouse','Volume\x20brick\x20coordinate\x20is\x20out\x20of\x20range.\x20体积分块坐标越界。','WebGPU\x20volume\x20context\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20context\x20尚未初始化。','endsWith','\x20must\x20be\x20a\x20positive\x20finite\x20number.\x20','\x20plate\x20color\x20must\x20use\x20values\x20from\x20zero\x20through\x20one.\x20体积切面底板颜色必须位于零至一。','zoomSpeed','style','不支持的颜色格式:\x20','Volume\x20brick\x20','latitudeRadians','always-visible','uniformUpdateCount','display','valuesEqual','opacityStops','WebGPU\x20volume\x20device\x20was\x20lost:\x20','budgetLimited','initialize','createBuffer','viewProjection','volume\x20atlas\x20clear\x20bind\x20group','bindControls','residentBySlotIndex','atlas','step','WebGPU\x20volume\x20resources\x20were\x20released.\x20WebGPU\x20体积资源已释放。','overlaySlicePipeline','toStringTag','volume\x20raymarch\x20pass','getAtlasTexture','wheel','border','uploadPump','residentByLogicalIndex','\x20must\x20contain\x20sixteen\x20finite\x20values.\x20','Volume\x20slice\x20','configure','triangle-list','main','maxX','clientX','\x20is\x20duplicated.\x20体积切面\x20ID\x20重复。','validation','Scene\x20mesh\x20','clearPreview','beginInteraction','Geographic\x20volume\x20proxy\x20bounds\x20are\x20invalid.\x20地理体积代理范围无效。','setPipeline','width','skippedSampleCount','lastSubmittedFrameTimestamp','colorMode','object','createElement','The\x20maximum\x20locked\x20slice\x20count\x20has\x20been\x20reached.\x20已达到最大锁定切面数量。','destroy','end','getBindGroupLayout','getCanvas','webgpu','clipMinimum','div','volumeDimFactor','\x20requires\x20','element','Volume\x20Y\x20axis','floor','transform','writeParams','isInteger','.\x20体积逻辑砖块索引无效。','\x20包含多个采样点时步长不能为零。','Alpha\x20颜色通道必须在0\x20~\x201之间','fovYDegrees','Volume\x20valueScale\x20must\x20be\x20finite.\x20体积\x20valueScale\x20必须是有限数值。','atlasCapacity','\x0a@group(0)\x20@binding(0)\x20var\x20atlas:\x20texture_storage_3d<r32float,\x20write>;\x0a\x0a@compute\x20@workgroup_size(4,\x204,\x204)\x0afn\x20main(@builtin(global_invocation_id)\x20invocation:\x20vec3u)\x20{\x0a\x20\x20\x20\x20let\x20dimensions\x20=\x20textureDimensions(atlas);\x0a\x20\x20\x20\x20if\x20(all(invocation\x20<\x20dimensions))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20textureStore(atlas,\x20vec3i(invocation),\x20vec4f(0.0));\x0a\x20\x20\x20\x20}\x0a}\x0a','volume\x20slice\x20','gap','flex','prepareBrickUpload','volume-bounds','requestControllers','getFormat','WebGPU\x20transfer\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20传递函数绑定布局不可用。','volumeParamsBuffer','exp','brickSortCount','orbit','pendingKeys','drawMeshes','setVertexBuffer','getVolumeBindGroupLayout','WRITE','getSceneParamsBuffer','WebGPU\x20scene\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20场景参数\x20Buffer\x20不可用。','quality','相机宽高比必须是大于\x200\x20的有限数。','axisHysteresisPixels','RENDER_ATTACHMENT','getFrame','COPY_SRC','reject','getEffectiveRenderScale','name','onSlicesChange','hideAllMarkers','getMappedRange','isSafeInteger','xCount','copyTextureToBuffer','bindSliceInteraction','far','button','create','WebGPU\x20scene\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20场景绑定布局不可用。','touch','createView','load','moved','frameAvailableCallback','个色标范围的\x20min\x20必须小于\x20max','viewportHeight','clientHeight','clientY','WebGPU\x20volume\x20atlas\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积图集资源不完整。','applyHit','bytesPerRow','setBindGroup','volume\x20transfer\x20bind\x20group\x20layout','statistics','\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20','WebGPU\x20slice\x20resources\x20are\x20unavailable.\x20WebGPU\x20切面资源不可用。','left','.\x20WebGPU\x20体积帧读取失败。','renderMode','axisHysteresis','writeVolumeParams','uploadGeneration','autoQuality','destroyResources','onSubmittedWorkDone','touchBricks','min','79273GtnZrl','recreateSceneBindGroup','pointerdown','color','shape','createBindGroupLayout','some','\x20with\x20one\x20sample\x20must\x20use\x20equal\x20endpoints.\x20','value','rejectPendingBrickUploads','hitTolerance','atlasTextures','desiredKeys','subscribe','top','copyBufferToTexture','requestAdapter','volume\x20scene\x20bind\x20group','idle','setCamera','geometryBindGroup','createLayout','aspect','generation','adapter','draw','cartesian','count','readChunk','pointerEvents','wgs84','descriptors','handlePointerMove','WebGPU\x20volume\x20atlas\x20texture\x20is\x20unavailable.\x20WebGPU\x20体积图集纹理不可用。','rgba(','maxLockedSlices\x20必须是正整数。','Geographic\x20volume\x20normalization\x20must\x20be\x20a\x20positive\x20finite\x20distance.\x20地理体积归一化尺度必须是正有限距离。','navigationMode','r32float','WebGPU\x20volume\x20renderer\x20is\x20not\x20ready\x20for\x20frame\x20capture.\x20WebGPU\x20体积渲染器尚不能读取帧。','semiMajorAxisScaled','encodePreparedBrickUpload','uploadedBrickCount','endInteraction','requestBrickSchedule','mode','onInteractionStart','near','\x20必须是正整数。',',\x20size=','setProjectionType','pointercancel','startsWith','getUploadStagingBuffer','transferBindGroupLayout','bindGroup','minimumDistance','bindSliceState','counts','struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VertexOutput\x20{\x0a\x20\x20\x20\x20@builtin(position)\x20position:\x20vec4f,\x0a\x20\x20\x20\x20@location(0)\x20color:\x20vec4f,\x0a}\x0a\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneParams;\x0a\x0afn\x20transformScenePosition(position:\x20vec3f)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20scene.viewProjection\x20*\x20scene.modelMatrix\x20*\x20vec4f(position,\x201.0);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20mix(scene.geographic1.z,\x20scene.geographic1.w,\x20position.x);\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20mix(scene.geographic2.x,\x20scene.geographic2.y,\x20position.z);\x0a\x20\x20\x20\x20let\x20height\x20=\x20mix(scene.geographic2.z,\x20scene.geographic2.w,\x20position.y);\x0a\x20\x20\x20\x20let\x20latitudeSin\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20let\x20latitudeCos\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20let\x20semiMajor\x20=\x20scene.geographic1.x;\x0a\x20\x20\x20\x20let\x20semiMinor\x20=\x20scene.geographic1.y;\x0a\x20\x20\x20\x20let\x20eccentricitySquared\x20=\x201.0\x20-\x20semiMinor\x20*\x20semiMinor\x20/\x20(semiMajor\x20*\x20semiMajor);\x0a\x20\x20\x20\x20let\x20primeVerticalRadius\x20=\x20semiMajor\x20/\x20sqrt(1.0\x20-\x20eccentricitySquared\x20*\x20latitudeSin\x20*\x20latitudeSin);\x0a\x20\x20\x20\x20let\x20ecef\x20=\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20cos(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20sin(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20*\x20(1.0\x20-\x20eccentricitySquared)\x20+\x20height)\x20*\x20latitudeSin\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20scene.viewProjection\x20*\x20vec4f(ecef\x20-\x20scene.geographic0.yzw,\x201.0);\x0a}\x0a\x0a@vertex\x0afn\x20vertexMain(@location(0)\x20position:\x20vec3f,\x20@location(1)\x20color:\x20vec4f)\x20->\x20VertexOutput\x20{\x0a\x20\x20\x20\x20return\x20VertexOutput(transformScenePosition(position),\x20color);\x0a}\x0a\x0a@fragment\x0afn\x20fragmentMain(input:\x20VertexOutput)\x20->\x20@location(0)\x20vec4f\x20{\x0a\x20\x20\x20\x20return\x20vec4f(input.color.rgb\x20*\x20input.color.a,\x20input.color.a);\x0a}\x0a','zAxis','requestRender','orthographic','managed','previousContainerPosition','updateSlice','levelCount','getAttachments','byteLength','updateLockedSlice','dispatchWorkgroups','sceneTrianglePipeline','WebGPU\x20volume\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积绑定布局不可用。','volume\x20scene\x20mesh\x20','destroyBuffers','overlayLinePipeline','WebGPU\x20transfer\x20resources\x20are\x20unavailable.\x20WebGPU\x20传递函数资源不可用。','indices','slotCountX','mapAsync','getEffectiveQuality','WebGPU\x20volume\x20scene\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积场景尺寸必须是正整数。','sceneDepthView','gpuBytes','resources','baseModelMatrix','Volume\x20brick\x20upload\x20became\x20stale.\x20体积砖上传已过期。','sliceInteraction','WebGPU\x20volume\x20atlas\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积图集布局不可用。','setProfiles','geographic-wgs84','configureSource','colorBuffer','createVolumeScene','volume\x20color\x20stop\x20colors','hitRadius','syncLockedMarkers','padding','resize','\x20至少需要两个高度层。','isNaN','WebGPU\x20slice\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20切面绑定布局不可用。','buffer','setSlices','toolMode','uploadBatchCount','halo','WebGPU\x20volume\x20atlas\x20has\x20no\x20evictable\x20slot.\x20WebGPU\x20体积图集没有可驱逐的槽位。','find','volume\x20opacity\x20stop\x20values','cameraPosition','setSource','error','tan','hypot','\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20','alignItems','pointerId','stepLength','Height\x20/\x20高度','4ZjRYOy','WebGPU\x20scene\x20depth\x20attachment\x20is\x20not\x20initialized.\x20WebGPU\x20场景深度附件尚未初始化。','isInteracting','smooth','TEXTURE_BINDING','getAtlas','removeEventListener','Volume\x20X\x20axis','Volume\x20timeIndex\x20is\x20out\x20of\x20range:\x20','brickHeight','pendingSliceSnapshot','maxLockedSlices','uploadBrick','maximumPitch','11AjuvXc','opacity','size','sort','无法归一化长度为零的三维向量。','\x20with\x20multiple\x20samples\x20must\x20have\x20a\x20non-zero\x20step.\x20','pixelRatioCap','volume-axes','volume\x20color\x20stop\x20values','volume\x20atlas\x20bind\x20group\x20layout','\x20的\x20path\x20包含非有限坐标。','WebGPU\x20is\x20required\x20for\x20the\x20volume\x20scene\x20but\x20is\x20unavailable.\x20体积场景需要\x20WebGPU,但当前环境不可用。','setAttribute','getBoundingClientRect','Volume\x20chunk\x20request\x20was\x20aborted.\x20体积块请求已取消。','.\x20最大锁定切面数量为\x20','sceneLinePipeline','listeners','renderer','popErrorScope','path','splice','perspective','Failed\x20to\x20create\x20WebGPU\x20volume\x20pipelines:\x20','sliceState','configureModel','handlePointerUp','lost','pointer','getGeometryBindGroupLayout','level','READ','volumeDimFactor\x20必须位于\x200\x20到\x201。','transferResources','Volume','MAP_READ','submittedFrameCount','pointermove','Volume\x20opacity\x20stop\x20values\x20must\x20be\x20finite\x20and\x20strictly\x20increasing.\x20体积透明度节点值必须有限且严格递增。','watchDeviceLost','isFinite','ready','device','textContent','cachedBricks','sceneSlicePipeline','WebGPU\x20volume\x20canvas\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20Canvas\x20尚未初始化。','156172OFQOWw','切面位置必须是有限数。','volume\x20transfer\x20bind\x20group','replace','rgb\x20颜色通道数量不正确:\x20','valueScale','volumeCamera','heights','clientWidth','maximumUploadBatchBytes','absolute','STORAGE','depth','volume\x20brick\x20upload\x20batch\x20flush','timeIndex','loadedKeys','interactionStepScale','sourceGeneration','countZ','M4WVolumeScene','max','position','balanced','COPY_DST','profileResources','syncPreview','getCurrentTexture','context','\x20noData\x20必须是有限数值或\x20NaN。','axisResources','viewProjectionMatrix','handlePointerLeave','topology','submit','9863CfylpO','defineProperty','gpu','firstChild','clearPageEntry','volumeBindGroupLayout','add','visible','renderScale','getSliceBindGroupLayout','UNIFORM','.\x20体积\x20timeIndex\x20越界。','.\x20体积分块\x20','setAspect','from','11029450pwtXel','plateColor','revision','includes','volume\x20brick\x20page\x20table','processBrickUploads','volumeBindGroup','trim','map','queue','relative','addEventListener','Returned\x20volume\x20chunk\x20dimensions\x20do\x20not\x20match\x20its\x20range.\x20返回体积分块尺寸与范围不一致。','encodeVolumePass','panSpeed','countY','Module','activePointer','onSliceError','one','coordinate','destroyed','\x20的\x20path\x20必须包含至少两个\x20[x,\x20z]\x20点。','volume\x20brick\x20atlas\x20','透视相机参数无效。','acquireSlot','createCommandEncoder','createPipelineLayout','scheduleUploadPump','verticalScale','fragmentMain','Volume\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积透明度节点不能为空。','maxY','minZ','不支持的\x20rgb\x20颜色格式:\x20','minX','pointerup','next','extent','pageTableBuffer','recordFrameInterval','createShaderModule','options','createTextNode','powerPreference','slotIndex','brickScheduleCount','attachments','WebGPU\x20volume\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20体积参数\x20Buffer\x20不可用。','pageTableValues','setToolMode','getSliceResources','auto','logicalIndex','uploadStagingBufferSize','maximumDistance','positions','memoryHardLimitBytes','onLimitReached','handlePointerDown','filter','maximum','sliceDepthMode','getPageTableBuffer','Returned\x20volume\x20chunk\x20range\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块范围与请求不一致。','ceil','axes','getSceneBindGroupLayout','round','createBindGroup','actualFrameIntervalMilliseconds','updatePreview','相机宽高比必须大于\x200。','WebGPU\x20volume\x20page\x20table\x20exceeds\x20the\x20configured\x20memory\x20limit.\x20WebGPU\x20体积页表超过显存限制。','external','setTransfer','createResource','\x20只有一个采样点时端点必须相等。','WebGPU\x20volume\x20page\x20table\x20is\x20unavailable.\x20WebGPU\x20体积页表不可用。','cos','getVolumeParamsBuffer','volume\x20scene\x20params','toUpperCase','readRange','inverseModelMatrix','camera','snapshot','showDebugGeometry','volume\x20scene\x20frame','createSliceState','abs','lastUsedFrame','unconfigure','deltaY','getDevice','canvas','.\x20体积时间索引越界。','114JXRdZc','lockSlice','releaseGpuResources','coreSampleCount','\x20count','A\x20destroyed\x20volume\x20scene\x20cannot\x20capture\x20a\x20frame.\x20已销毁的体积场景不能读取帧。','line-list','WebGPU\x20volume\x20source\x20must\x20be\x20configured\x20before\x20uploading\x20bricks.\x20上传砖块前必须配置\x20WebGPU\x20体积数据源。','previousAxis','frameRequest','volume\x20scene\x20mesh\x20shader','slices','parseInt','minimumPitch','get','sourceYStart','timeCount','createPipelines','findIndex','state','click','clearLockedSlices','beginLockedSliceDrag','handleWindowPointerMove','signal','createProjectionMatrix','nextId','volume\x20atlas\x20clear','encodeOverlayPass','sceneBindGroupLayout','previewMarker','VERTEX','occupied','WebGPU\x20volume\x20format\x20is\x20not\x20initialized.\x20WebGPU\x20体积格式尚未初始化。','levelStart','slicePlateColor','删除切面','removeSlice','createLockedMarker','static','WebGPU\x20volume\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积尺寸必须是正整数。','AbortError','正交相机高度和宽高比必须大于\x200。','interactionElement','writePageEntry','encodeScenePass','formatPosition','markerOverlay','distance','\x20必须包含十六个有限数值。','vertexMain','pendingBrickUploads','volume\x20slice\x20bind\x20group\x20layout','pointerleave','maxTextureDimension3D','cachedAxes','set','volume\x20atlas\x20clear\x20shader','createInMemoryVolumeSource','Volume\x20requires\x20','WebGPU\x20volume\x20frame\x20capture\x20failed:\x20','start','4px','WebGPU\x20scene\x20attachments\x20are\x20unavailable.\x20WebGPU\x20场景附件不可用。','geographicTransform','lastTimingFrameTimestamp','setAxes','\x20的\x20heights\x20包含非有限高度。','initialized','Volume\x20Z\x20axis','getAxisResources','stopPropagation','inverseViewProjection','切面轴采样数必须是正整数。','read-only-storage','Count','getTransferBindGroupLayout','lifecycleState','aria-label',',\x20count=','struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VolumeParams\x20{\x0a\x20\x20\x20\x20dimensions:\x20vec4u,\x0a\x20\x20\x20\x20brickInterior:\x20vec4u,\x0a\x20\x20\x20\x20brickCount:\x20vec4u,\x0a\x20\x20\x20\x20atlasSlots:\x20vec4u,\x0a\x20\x20\x20\x20atlasDimensions:\x20vec4u,\x0a\x20\x20\x20\x20valueMeta:\x20vec4f,\x0a}\x0a\x0astruct\x20PageTable\x20{\x0a\x20\x20\x20\x20values:\x20array<vec4u>,\x0a}\x0a\x0astruct\x20FloatValues\x20{\x0a\x20\x20\x20\x20values:\x20array<f32>,\x0a}\x0a\x0astruct\x20Colors\x20{\x0a\x20\x20\x20\x20values:\x20array<vec4f>,\x0a}\x0a\x0astruct\x20VolumeSample\x20{\x0a\x20\x20\x20\x20value:\x20f32,\x0a\x20\x20\x20\x20valid:\x20bool,\x0a}\x0a\x0astruct\x20RayInterval\x20{\x0a\x20\x20\x20\x20minimum:\x20f32,\x0a\x20\x20\x20\x20maximum:\x20f32,\x0a\x20\x20\x20\x20valid:\x20bool,\x0a}\x0a\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneParams;\x0a@group(0)\x20@binding(1)\x20var\x20sceneDepth:\x20texture_depth_2d;\x0a@group(1)\x20@binding(0)\x20var\x20volumeAtlas0:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(1)\x20var\x20volumeAtlas1:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(2)\x20var\x20volumeAtlas2:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(3)\x20var\x20volumeAtlas3:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(4)\x20var\x20volumeAtlas4:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(5)\x20var\x20volumeAtlas5:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(6)\x20var\x20volumeAtlas6:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(7)\x20var\x20volumeAtlas7:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(8)\x20var<storage,\x20read>\x20pageTable:\x20PageTable;\x0a@group(1)\x20@binding(9)\x20var<uniform>\x20volume:\x20VolumeParams;\x0a@group(2)\x20@binding(0)\x20var<storage,\x20read>\x20colorStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(1)\x20var<storage,\x20read>\x20colorStopColors:\x20Colors;\x0a@group(2)\x20@binding(2)\x20var<storage,\x20read>\x20opacityStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(3)\x20var<storage,\x20read>\x20opacityStopAlphas:\x20FloatValues;\x0a\x0afn\x20invalidVolumeSample()\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(0.0,\x20false);\x0a}\x0a\x0afn\x20validVolumeSample(value:\x20f32)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(value,\x20true);\x0a}\x0a\x0afn\x20transformPoint(matrix:\x20mat4x4f,\x20point:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20let\x20transformed\x20=\x20matrix\x20*\x20vec4f(point,\x201.0);\x0a\x20\x20\x20\x20return\x20transformed.xyz\x20/\x20transformed.w;\x0a}\x0a\x0afn\x20reconstructWorldPosition(ndc:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20return\x20transformPoint(scene.inverseViewProjection,\x20ndc);\x0a}\x0a\x0a//\x20地理模式将局部\x20ECEF\x20采样点反算为经纬高归一化坐标;代理盒仅限制射线范围,不决定体积形状。\x0a//\x20Geographic\x20mode\x20converts\x20each\x20local\x20ECEF\x20sample\x20back\x20to\x20normalized\x20longitude,\x20latitude,\x20and\x20altitude;\x20the\x20proxy\x20box\x20only\x20limits\x20the\x20ray\x20interval\x20and\x20does\x20not\x20define\x20the\x20volume\x20shape.\x0afn\x20worldToVolume(worldPosition:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20transformPoint(scene.inverseModelMatrix,\x20worldPosition);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20ecef\x20=\x20worldPosition\x20+\x20scene.geographic0.yzw;\x0a\x20\x20\x20\x20let\x20semiMajor\x20=\x20scene.geographic1.x;\x0a\x20\x20\x20\x20let\x20semiMinor\x20=\x20scene.geographic1.y;\x0a\x20\x20\x20\x20let\x20eccentricitySquared\x20=\x201.0\x20-\x20semiMinor\x20*\x20semiMinor\x20/\x20(semiMajor\x20*\x20semiMajor);\x0a\x20\x20\x20\x20let\x20secondEccentricitySquared\x20=\x20(semiMajor\x20*\x20semiMajor\x20-\x20semiMinor\x20*\x20semiMinor)\x20/\x20(semiMinor\x20*\x20semiMinor);\x0a\x20\x20\x20\x20let\x20horizontal\x20=\x20length(ecef.xy);\x0a\x20\x20\x20\x20let\x20theta\x20=\x20atan2(ecef.z\x20*\x20semiMajor,\x20horizontal\x20*\x20semiMinor);\x0a\x20\x20\x20\x20let\x20thetaSin\x20=\x20sin(theta);\x0a\x20\x20\x20\x20let\x20thetaCos\x20=\x20cos(theta);\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20atan2(\x0a\x20\x20\x20\x20\x20\x20\x20\x20ecef.z\x20+\x20secondEccentricitySquared\x20*\x20semiMinor\x20*\x20thetaSin\x20*\x20thetaSin\x20*\x20thetaSin,\x0a\x20\x20\x20\x20\x20\x20\x20\x20horizontal\x20-\x20eccentricitySquared\x20*\x20semiMajor\x20*\x20thetaCos\x20*\x20thetaCos\x20*\x20thetaCos\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20let\x20latitudeSin\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20let\x20primeVerticalRadius\x20=\x20semiMajor\x20/\x20sqrt(1.0\x20-\x20eccentricitySquared\x20*\x20latitudeSin\x20*\x20latitudeSin);\x0a\x20\x20\x20\x20let\x20height\x20=\x20horizontal\x20/\x20max(0.000001,\x20abs(cos(latitude)))\x20-\x20primeVerticalRadius;\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20atan2(ecef.y,\x20ecef.x);\x0a\x20\x20\x20\x20return\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x20(longitude\x20-\x20scene.geographic1.z)\x20/\x20(scene.geographic1.w\x20-\x20scene.geographic1.z),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(height\x20-\x20scene.geographic2.z)\x20/\x20(scene.geographic2.w\x20-\x20scene.geographic2.z),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(latitude\x20-\x20scene.geographic2.x)\x20/\x20(scene.geographic2.y\x20-\x20scene.geographic2.x)\x0a\x20\x20\x20\x20);\x0a}\x0a\x0afn\x20proxyToVolume(proxyPosition:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20proxyPosition;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20worldToVolume(transformPoint(scene.modelMatrix,\x20proxyPosition));\x0a}\x0a\x0afn\x20isInsideVolume(position:\x20vec3f)\x20->\x20bool\x20{\x0a\x20\x20\x20\x20return\x20all(position\x20>=\x20scene.clipMinimum.xyz)\x20&&\x20all(position\x20<=\x20scene.clipMaximum.xyz);\x0a}\x0a\x0afn\x20intersectAxis(origin:\x20f32,\x20direction:\x20f32,\x20minimumValue:\x20f32,\x20maximumValue:\x20f32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20if\x20(abs(direction)\x20<\x200.000001)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(origin\x20<\x20minimumValue\x20||\x20origin\x20>\x20maximumValue)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(1.0,\x20-1.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(-1e20,\x201e20);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20first\x20=\x20(minimumValue\x20-\x20origin)\x20/\x20direction;\x0a\x20\x20\x20\x20let\x20second\x20=\x20(maximumValue\x20-\x20origin)\x20/\x20direction;\x0a\x20\x20\x20\x20return\x20vec2f(min(first,\x20second),\x20max(first,\x20second));\x0a}\x0a\x0afn\x20intersectClipBox(origin:\x20vec3f,\x20direction:\x20vec3f)\x20->\x20RayInterval\x20{\x0a\x20\x20\x20\x20let\x20x\x20=\x20intersectAxis(origin.x,\x20direction.x,\x20scene.clipMinimum.x,\x20scene.clipMaximum.x);\x0a\x20\x20\x20\x20let\x20y\x20=\x20intersectAxis(origin.y,\x20direction.y,\x20scene.clipMinimum.y,\x20scene.clipMaximum.y);\x0a\x20\x20\x20\x20let\x20z\x20=\x20intersectAxis(origin.z,\x20direction.z,\x20scene.clipMinimum.z,\x20scene.clipMaximum.z);\x0a\x20\x20\x20\x20let\x20minimumDistance\x20=\x20max(max(x.x,\x20y.x),\x20z.x);\x0a\x20\x20\x20\x20let\x20maximumDistance\x20=\x20min(min(x.y,\x20y.y),\x20z.y);\x0a\x20\x20\x20\x20return\x20RayInterval(max(0.0,\x20minimumDistance),\x20maximumDistance,\x20maximumDistance\x20>=\x20max(0.0,\x20minimumDistance));\x0a}\x0a\x0afn\x20getPageIndex(brick:\x20vec3u)\x20->\x20u32\x20{\x0a\x20\x20\x20\x20return\x20brick.x\x20+\x20brick.y\x20*\x20volume.brickCount.x\x20+\x20brick.z\x20*\x20volume.brickCount.x\x20*\x20volume.brickCount.y;\x0a}\x0a\x0afn\x20getSlotCoordinate(slotIndex:\x20u32)\x20->\x20vec3u\x20{\x0a\x20\x20\x20\x20let\x20layerSize\x20=\x20volume.atlasSlots.x\x20*\x20volume.atlasSlots.y;\x0a\x20\x20\x20\x20let\x20z\x20=\x20slotIndex\x20/\x20layerSize;\x0a\x20\x20\x20\x20let\x20remainder\x20=\x20slotIndex\x20-\x20z\x20*\x20layerSize;\x0a\x20\x20\x20\x20let\x20y\x20=\x20remainder\x20/\x20volume.atlasSlots.x;\x0a\x20\x20\x20\x20let\x20x\x20=\x20remainder\x20-\x20y\x20*\x20volume.atlasSlots.x;\x0a\x20\x20\x20\x20return\x20vec3u(x,\x20y,\x20z);\x0a}\x0a\x0afn\x20loadAtlasValue(atlasIndex:\x20u32,\x20coordinate:\x20vec3i)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x200u)\x20{\x20return\x20textureLoad(volumeAtlas0,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x201u)\x20{\x20return\x20textureLoad(volumeAtlas1,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x202u)\x20{\x20return\x20textureLoad(volumeAtlas2,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x203u)\x20{\x20return\x20textureLoad(volumeAtlas3,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x204u)\x20{\x20return\x20textureLoad(volumeAtlas4,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x205u)\x20{\x20return\x20textureLoad(volumeAtlas5,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x206u)\x20{\x20return\x20textureLoad(volumeAtlas6,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20return\x20textureLoad(volumeAtlas7,\x20coordinate,\x200).r;\x0a}\x0a\x0afn\x20loadAtlasVoxel(voxel:\x20vec3i,\x20owningBrick:\x20vec3u)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20page\x20=\x20pageTable.values[getPageIndex(owningBrick)];\x0a\x0a\x20\x20\x20\x20if\x20(page.x\x20==\x200u\x20||\x20page.z\x20==\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20slot\x20=\x20getSlotCoordinate(page.x\x20-\x201u);\x0a\x20\x20\x20\x20let\x20physicalBrick\x20=\x20volume.brickInterior.xyz\x20+\x20vec3u(2u);\x0a\x20\x20\x20\x20let\x20brickStart\x20=\x20vec3i(owningBrick\x20*\x20volume.brickInterior.xyz);\x0a\x20\x20\x20\x20let\x20local\x20=\x20voxel\x20-\x20brickStart\x20+\x20vec3i(1);\x0a\x20\x20\x20\x20let\x20atlasCoordinate\x20=\x20vec3i(slot\x20*\x20physicalBrick)\x20+\x20local;\x0a\x20\x20\x20\x20let\x20value\x20=\x20loadAtlasValue(page.w,\x20atlasCoordinate);\x0a\x0a\x20\x20\x20\x20if\x20(value\x20!=\x20value\x20||\x20(volume.valueMeta.y\x20>\x200.5\x20&&\x20value\x20==\x20volume.valueMeta.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20validVolumeSample(value);\x0a}\x0a\x0afn\x20sampleVolume(modelPosition:\x20vec3f)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(modelPosition,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20normalized\x20*\x20vec3f(volume.dimensions.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20baseVoxel\x20=\x20vec3i(floor(voxel));\x0a\x20\x20\x20\x20let\x20maximumVoxel\x20=\x20vec3i(volume.dimensions.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20nextVoxel\x20=\x20min(baseVoxel\x20+\x20vec3i(1),\x20maximumVoxel);\x0a\x20\x20\x20\x20let\x20fraction\x20=\x20voxel\x20-\x20vec3f(baseVoxel);\x0a\x20\x20\x20\x20let\x20owningBrick\x20=\x20min(vec3u(max(baseVoxel,\x20vec3i(0)))\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20c000\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20baseVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c100\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c010\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c110\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c001\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c101\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c011\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c111\x20=\x20loadAtlasVoxel(nextVoxel,\x20owningBrick);\x0a\x0a\x20\x20\x20\x20if\x20(!c000.valid\x20||\x20!c100.valid\x20||\x20!c010.valid\x20||\x20!c110.valid\x20||\x20!c001.valid\x20||\x20!c101.valid\x20||\x20!c011.valid\x20||\x20!c111.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20bottom0\x20=\x20mix(c000.value,\x20c100.value,\x20fraction.x);\x0a\x20\x20\x20\x20let\x20bottom1\x20=\x20mix(c010.value,\x20c110.value,\x20fraction.x);\x0a\x20\x20\x20\x20let\x20top0\x20=\x20mix(c001.value,\x20c101.value,\x20fraction.x);\x0a\x20\x20\x20\x20let\x20top1\x20=\x20mix(c011.value,\x20c111.value,\x20fraction.x);\x0a\x20\x20\x20\x20return\x20validVolumeSample(mix(mix(bottom0,\x20bottom1,\x20fraction.y),\x20mix(top0,\x20top1,\x20fraction.y),\x20fraction.z));\x0a}\x0a\x0a//\x20体积分步只读取当前最近体素,避免对最终透明的样本执行八次纹理读取;高精度切面仍使用独立的三线性采样。\x0a//\x20Raymarch\x20steps\x20read\x20the\x20nearest\x20voxel\x20so\x20transparent\x20samples\x20avoid\x20eight\x20texture\x20loads;\x20high-detail\x20slices\x20keep\x20their\x20separate\x20trilinear\x20sampling.\x0afn\x20sampleVolumeNearest(modelPosition:\x20vec3f)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(modelPosition,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20maximumVoxel\x20=\x20volume.dimensions.xyz\x20-\x20vec3u(1u);\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20vec3i(round(normalized\x20*\x20vec3f(maximumVoxel)));\x0a\x20\x20\x20\x20let\x20owningBrick\x20=\x20min(vec3u(max(voxel,\x20vec3i(0)))\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20return\x20loadAtlasVoxel(voxel,\x20owningBrick);\x0a}\x0a\x0afn\x20sampleColor(value:\x20f32)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.x);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20colorStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20colorStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20colorStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ratio\x20=\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(colorStopColors.values[index],\x20colorStopColors.values[index\x20+\x201u],\x20ratio);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20colorStopColors.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20sampleOpacity(value:\x20f32)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.y);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20opacityStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20opacityStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20opacityStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ratio\x20=\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(opacityStopAlphas.values[index],\x20opacityStopAlphas.values[index\x20+\x201u],\x20ratio);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20opacityStopAlphas.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20nextBrickAxisDistance(position:\x20f32,\x20direction:\x20f32,\x20minimumValue:\x20f32,\x20maximumValue:\x20f32)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20if\x20(direction\x20>\x200.000001)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20max(scene.render.w,\x20(maximumValue\x20-\x20position)\x20/\x20direction\x20+\x20scene.render.w\x20*\x200.25);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(direction\x20<\x20-0.000001)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20max(scene.render.w,\x20(minimumValue\x20-\x20position)\x20/\x20direction\x20+\x20scene.render.w\x20*\x200.25);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x201e20;\x0a}\x0a\x0afn\x20getEmptyBrickSkipDistance(position:\x20vec3f,\x20direction:\x20vec3f)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(position,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20maximumVoxel\x20=\x20volume.dimensions.xyz\x20-\x20vec3u(1u);\x0a\x20\x20\x20\x20let\x20safeMaximumVoxel\x20=\x20max(maximumVoxel,\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20vec3u(floor(normalized\x20*\x20vec3f(maximumVoxel)));\x0a\x20\x20\x20\x20let\x20brick\x20=\x20min(voxel\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20page\x20=\x20pageTable.values[getPageIndex(brick)];\x0a\x0a\x20\x20\x20\x20if\x20(page.x\x20!=\x200u\x20&&\x20page.z\x20!=\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x200.0;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20minimumPosition\x20=\x20vec3f(brick\x20*\x20volume.brickInterior.xyz)\x20/\x20vec3f(safeMaximumVoxel);\x0a\x20\x20\x20\x20let\x20maximumPosition\x20=\x20vec3f(min((brick\x20+\x20vec3u(1u))\x20*\x20volume.brickInterior.xyz,\x20maximumVoxel))\x20/\x20vec3f(safeMaximumVoxel);\x0a\x20\x20\x20\x20return\x20min(\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextBrickAxisDistance(normalized.x,\x20direction.x,\x20minimumPosition.x,\x20maximumPosition.x),\x0a\x20\x20\x20\x20\x20\x20\x20\x20min(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nextBrickAxisDistance(normalized.y,\x20direction.y,\x20minimumPosition.y,\x20maximumPosition.y),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nextBrickAxisDistance(normalized.z,\x20direction.z,\x20minimumPosition.z,\x20maximumPosition.z)\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20);\x0a}\x0a\x0afn\x20getDepthDistance(pixel:\x20vec2i,\x20ndcXY:\x20vec2f,\x20rayOrigin:\x20vec3f,\x20rayDirection:\x20vec3f)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20depth\x20=\x20textureLoad(sceneDepth,\x20pixel,\x200);\x0a\x0a\x20\x20\x20\x20if\x20(depth\x20>=\x201.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x201e20;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20depthWorld\x20=\x20reconstructWorldPosition(vec3f(ndcXY,\x20depth));\x0a\x20\x20\x20\x20let\x20depthModel\x20=\x20transformPoint(scene.inverseModelMatrix,\x20depthWorld);\x0a\x20\x20\x20\x20return\x20max(0.0,\x20dot(depthModel\x20-\x20rayOrigin,\x20rayDirection));\x0a}\x0a\x0afn\x20raymarchComposite(origin:\x20vec3f,\x20direction:\x20vec3f,\x20interval:\x20RayInterval)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20var\x20accumulated\x20=\x20vec4f(0.0);\x0a\x20\x20\x20\x20var\x20distance\x20=\x20interval.minimum;\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20<\x204096u\x20&&\x20distance\x20<=\x20interval.maximum\x20&&\x20accumulated.a\x20<\x200.985;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20proxyPosition\x20=\x20origin\x20+\x20direction\x20*\x20distance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20skipDistance\x20=\x20select(0.0,\x20getEmptyBrickSkipDistance(proxyPosition,\x20direction),\x20scene.geographic0.x\x20<\x200.5);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(skipDistance\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20skipDistance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20volumePosition\x20=\x20proxyToVolume(proxyPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!isInsideVolume(volumePosition))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20sample\x20=\x20sampleVolumeNearest(volumePosition);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sample.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sampleAlpha\x20=\x20sampleOpacity(sample.value);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sampleAlpha\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20color\x20=\x20sampleColor(sample.value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20alpha\x20=\x201.0\x20-\x20exp(-sampleAlpha\x20*\x20scene.render.z\x20*\x20scene.render.w);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20contribution\x20=\x20(1.0\x20-\x20accumulated.a)\x20*\x20alpha;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20accumulated\x20=\x20vec4f(accumulated.rgb\x20+\x20color.rgb\x20*\x20contribution,\x20accumulated.a\x20+\x20contribution);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20finalAlpha\x20=\x20accumulated.a\x20*\x20scene.render.y\x20*\x20scene.transfer.z;\x0a\x20\x20\x20\x20return\x20vec4f(accumulated.rgb\x20*\x20scene.render.y\x20*\x20scene.transfer.z,\x20finalAlpha);\x0a}\x0a\x0afn\x20raymarchMaximum(origin:\x20vec3f,\x20direction:\x20vec3f,\x20interval:\x20RayInterval)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20var\x20maximumValue\x20=\x20-1e30;\x0a\x20\x20\x20\x20var\x20found\x20=\x20false;\x0a\x20\x20\x20\x20var\x20distance\x20=\x20interval.minimum;\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20<\x204096u\x20&&\x20distance\x20<=\x20interval.maximum;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20proxyPosition\x20=\x20origin\x20+\x20direction\x20*\x20distance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20skipDistance\x20=\x20select(0.0,\x20getEmptyBrickSkipDistance(proxyPosition,\x20direction),\x20scene.geographic0.x\x20<\x200.5);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(skipDistance\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20skipDistance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20volumePosition\x20=\x20proxyToVolume(proxyPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!isInsideVolume(volumePosition))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20sample\x20=\x20sampleVolumeNearest(volumePosition);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sample.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20maximumValue\x20=\x20max(maximumValue,\x20sample.value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20found\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(!found)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec4f(0.0);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20color\x20=\x20sampleColor(maximumValue);\x0a\x20\x20\x20\x20let\x20alpha\x20=\x20sampleOpacity(maximumValue)\x20*\x20scene.render.y\x20*\x20scene.transfer.z;\x0a\x20\x20\x20\x20return\x20vec4f(color.rgb\x20*\x20alpha,\x20alpha);\x0a}\x0a\x0a@vertex\x0afn\x20vertexMain(@builtin(vertex_index)\x20vertexIndex:\x20u32)\x20->\x20@builtin(position)\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20x\x20=\x20f32(i32(vertexIndex\x20&\x201u)\x20*\x204\x20-\x201);\x0a\x20\x20\x20\x20let\x20y\x20=\x20f32(i32(vertexIndex\x20>>\x201u)\x20*\x204\x20-\x201);\x0a\x20\x20\x20\x20return\x20vec4f(x,\x20y,\x200.0,\x201.0);\x0a}\x0a\x0a@fragment\x0afn\x20fragmentMain(@builtin(position)\x20fragmentPosition:\x20vec4f)\x20->\x20@location(0)\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20ndcXY\x20=\x20vec2f(fragmentPosition.x\x20/\x20scene.viewport.x\x20*\x202.0\x20-\x201.0,\x201.0\x20-\x20fragmentPosition.y\x20/\x20scene.viewport.y\x20*\x202.0);\x0a\x20\x20\x20\x20let\x20nearWorld\x20=\x20reconstructWorldPosition(vec3f(ndcXY,\x200.0));\x0a\x20\x20\x20\x20let\x20farWorld\x20=\x20reconstructWorldPosition(vec3f(ndcXY,\x201.0));\x0a\x20\x20\x20\x20let\x20nearModel\x20=\x20transformPoint(scene.inverseModelMatrix,\x20nearWorld);\x0a\x20\x20\x20\x20let\x20farModel\x20=\x20transformPoint(scene.inverseModelMatrix,\x20farWorld);\x0a\x20\x20\x20\x20let\x20direction\x20=\x20normalize(farModel\x20-\x20nearModel);\x0a\x20\x20\x20\x20var\x20interval\x20=\x20intersectClipBox(nearModel,\x20direction);\x0a\x0a\x20\x20\x20\x20if\x20(!interval.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20interval.maximum\x20=\x20min(interval.maximum,\x20getDepthDistance(vec2i(fragmentPosition.xy),\x20ndcXY,\x20nearModel,\x20direction));\x0a\x0a\x20\x20\x20\x20if\x20(interval.maximum\x20<\x20interval.minimum)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(scene.render.x\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20raymarchMaximum(nearModel,\x20direction,\x20interval);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20raymarchComposite(nearModel,\x20direction,\x20interval);\x0a}\x0a','range','\x20must\x20be\x20a\x20non-negative\x20finite\x20value.\x20','centerEcefScaled','asin','setSliceTool','contextmenu','viewportWidth','\x20is\x20invalid:\x20','frameIndex','setFrameAvailableCallback','Volume\x20brick\x20halo\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20halo\x20必须是正整数。','getContext','rebuildProfiles','message','autoFrameIntervalTotal','updateTransferResources','keys','upload','Unable\x20to\x20allocate\x20a\x20WebGPU\x20R32F\x20volume\x20atlas\x20within\x20device\x20limits.\x20无法在设备限制内分配\x20WebGPU\x20R32F\x20体积图集。','sin','borderRadius','one-minus-src-alpha','activeInteractions','slotCount','autoFrameCount','volume\x20brick\x20reusable\x20upload\x20staging','loadBrick','dolly','getPreferredCanvasFormat','unsubscribe','flushSliceState','minY','WebGPU\x20volume\x20transfer\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积传递函数资源不完整。','coordinateSystem','WebGPU\x20volume\x20memory\x20limits\x20must\x20be\x20positive.\x20WebGPU\x20体积显存限制必须大于零。','scheduleBricks','lockedSlices','layout','bufferOffset','slotCountZ','prepared','finish','beginRenderPass','clipBox','切面轴端点必须是有限数。','overlayTrianglePipeline','subarray','coreRange','notify','abort','unfilterable-float','maximumPitchDegrees','Volume\x20color\x20and\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积颜色和透明度色标不能为空。','initializationGeneration','createGeographicVolumeLayout','sourceY','Volume\x20opacity\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积透明度色标必须按数值升序排列。','createComputePipeline','resourceRebuildCount','entries','setState','volume\x20geometry\x20bind\x20group\x20layout','updateAutoQuality','push','colorStops','setPointerCapture','semiMinorAxisScaled','performance','findAxisHit','releasePointerCapture','preventDefault','FRAGMENT','format','resolve','profiles','maxBufferSize','depthTexture','colorStopCount','rowsPerImage','onInteractionEnd','0.72','maxZ','modelMatrix','1705PMpHYz','Volume\x20revision\x20must\x20be\x20a\x20non-negative\x20integer.\x20体积\x20revision\x20必须是非负整数。','atlasLayout','volume\x20geometry\x20bind\x20group','startX','key','currentPreview','delete','fill','sliceResources','projection','renderDirty','transferBindGroup','slotCountY','slice','clearAtlasTexture','interactionController','pushErrorScope','volume\x20opacity\x20stop\x20alphas','路线剖面\x20','sliceId','Failed\x20to\x20acquire\x20a\x20WebGPU\x20adapter\x20for\x20the\x20volume\x20scene.\x20无法为体积场景获取\x20WebGPU\x20adapter。','depth32float','Maximum\x20locked\x20slice\x20count\x20is\x20','clipMaximum','\x20的\x20opacity\x20必须位于\x200\x20到\x201。','axis','depthMode','路线剖面\x20id\x20不能为空。','12px/1.2\x20sans-serif','limits','hasPointerCapture','catch','getInteractionKind','writeBuffer','enqueueBrickUpload','vertices','volumePipeline','premultiplied','brickWidth','hitTolerancePixels','chunk','\x20values\x20but\x20received\x20','cachedSlices','struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VolumeParams\x20{\x0a\x20\x20\x20\x20dimensions:\x20vec4u,\x0a\x20\x20\x20\x20brickInterior:\x20vec4u,\x0a\x20\x20\x20\x20brickCount:\x20vec4u,\x0a\x20\x20\x20\x20atlasSlots:\x20vec4u,\x0a\x20\x20\x20\x20atlasDimensions:\x20vec4u,\x0a\x20\x20\x20\x20valueMeta:\x20vec4f,\x0a}\x0a\x0astruct\x20PageTable\x20{\x20values:\x20array<vec4u>\x20}\x0astruct\x20FloatValues\x20{\x20values:\x20array<f32>\x20}\x0astruct\x20Colors\x20{\x20values:\x20array<vec4f>\x20}\x0astruct\x20SliceParams\x20{\x0a\x20\x20\x20\x20data:\x20vec4f,\x0a\x20\x20\x20\x20plateColor:\x20vec4f,\x0a}\x0astruct\x20VolumeSample\x20{\x20value:\x20f32,\x20valid:\x20bool\x20}\x0a\x0astruct\x20SliceVertexOutput\x20{\x0a\x20\x20\x20\x20@builtin(position)\x20position:\x20vec4f,\x0a\x20\x20\x20\x20@location(0)\x20modelPosition:\x20vec3f,\x0a}\x0a\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneParams;\x0a@group(1)\x20@binding(0)\x20var\x20volumeAtlas0:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(1)\x20var\x20volumeAtlas1:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(2)\x20var\x20volumeAtlas2:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(3)\x20var\x20volumeAtlas3:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(4)\x20var\x20volumeAtlas4:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(5)\x20var\x20volumeAtlas5:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(6)\x20var\x20volumeAtlas6:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(7)\x20var\x20volumeAtlas7:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(8)\x20var<storage,\x20read>\x20pageTable:\x20PageTable;\x0a@group(1)\x20@binding(9)\x20var<uniform>\x20volume:\x20VolumeParams;\x0a@group(2)\x20@binding(0)\x20var<storage,\x20read>\x20colorStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(1)\x20var<storage,\x20read>\x20colorStopColors:\x20Colors;\x0a@group(2)\x20@binding(2)\x20var<storage,\x20read>\x20opacityStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(3)\x20var<storage,\x20read>\x20opacityStopAlphas:\x20FloatValues;\x0a@group(3)\x20@binding(0)\x20var<uniform>\x20slice:\x20SliceParams;\x0a\x0afn\x20invalidVolumeSample()\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(0.0,\x20false);\x0a}\x0a\x0afn\x20validVolumeSample(value:\x20f32)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(value,\x20true);\x0a}\x0a\x0afn\x20getPageIndex(brick:\x20vec3u)\x20->\x20u32\x20{\x0a\x20\x20\x20\x20return\x20brick.x\x20+\x20brick.y\x20*\x20volume.brickCount.x\x20+\x20brick.z\x20*\x20volume.brickCount.x\x20*\x20volume.brickCount.y;\x0a}\x0a\x0afn\x20getSlotCoordinate(slotIndex:\x20u32)\x20->\x20vec3u\x20{\x0a\x20\x20\x20\x20let\x20layerSize\x20=\x20volume.atlasSlots.x\x20*\x20volume.atlasSlots.y;\x0a\x20\x20\x20\x20let\x20z\x20=\x20slotIndex\x20/\x20layerSize;\x0a\x20\x20\x20\x20let\x20remainder\x20=\x20slotIndex\x20-\x20z\x20*\x20layerSize;\x0a\x20\x20\x20\x20let\x20y\x20=\x20remainder\x20/\x20volume.atlasSlots.x;\x0a\x20\x20\x20\x20return\x20vec3u(remainder\x20-\x20y\x20*\x20volume.atlasSlots.x,\x20y,\x20z);\x0a}\x0a\x0afn\x20loadAtlasValue(atlasIndex:\x20u32,\x20coordinate:\x20vec3i)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x200u)\x20{\x20return\x20textureLoad(volumeAtlas0,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x201u)\x20{\x20return\x20textureLoad(volumeAtlas1,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x202u)\x20{\x20return\x20textureLoad(volumeAtlas2,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x203u)\x20{\x20return\x20textureLoad(volumeAtlas3,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x204u)\x20{\x20return\x20textureLoad(volumeAtlas4,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x205u)\x20{\x20return\x20textureLoad(volumeAtlas5,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x206u)\x20{\x20return\x20textureLoad(volumeAtlas6,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20return\x20textureLoad(volumeAtlas7,\x20coordinate,\x200).r;\x0a}\x0a\x0afn\x20loadAtlasVoxel(voxel:\x20vec3i,\x20owningBrick:\x20vec3u)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20page\x20=\x20pageTable.values[getPageIndex(owningBrick)];\x0a\x0a\x20\x20\x20\x20if\x20(page.x\x20==\x200u\x20||\x20page.z\x20==\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20physicalBrick\x20=\x20volume.brickInterior.xyz\x20+\x20vec3u(2u);\x0a\x20\x20\x20\x20let\x20slot\x20=\x20getSlotCoordinate(page.x\x20-\x201u);\x0a\x20\x20\x20\x20let\x20local\x20=\x20voxel\x20-\x20vec3i(owningBrick\x20*\x20volume.brickInterior.xyz)\x20+\x20vec3i(1);\x0a\x20\x20\x20\x20let\x20value\x20=\x20loadAtlasValue(page.w,\x20vec3i(slot\x20*\x20physicalBrick)\x20+\x20local);\x0a\x0a\x20\x20\x20\x20if\x20(value\x20!=\x20value\x20||\x20(volume.valueMeta.y\x20>\x200.5\x20&&\x20value\x20==\x20volume.valueMeta.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20validVolumeSample(value);\x0a}\x0a\x0afn\x20sampleVolume(modelPosition:\x20vec3f)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(modelPosition,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20normalized\x20*\x20vec3f(volume.dimensions.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20baseVoxel\x20=\x20vec3i(floor(voxel));\x0a\x20\x20\x20\x20let\x20nextVoxel\x20=\x20min(baseVoxel\x20+\x20vec3i(1),\x20vec3i(volume.dimensions.xyz\x20-\x20vec3u(1u)));\x0a\x20\x20\x20\x20let\x20fraction\x20=\x20voxel\x20-\x20vec3f(baseVoxel);\x0a\x20\x20\x20\x20let\x20owningBrick\x20=\x20min(vec3u(baseVoxel)\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20c000\x20=\x20loadAtlasVoxel(baseVoxel,\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c100\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c010\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c110\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c001\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c101\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c011\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c111\x20=\x20loadAtlasVoxel(nextVoxel,\x20owningBrick);\x0a\x0a\x20\x20\x20\x20if\x20(!c000.valid\x20||\x20!c100.valid\x20||\x20!c010.valid\x20||\x20!c110.valid\x20||\x20!c001.valid\x20||\x20!c101.valid\x20||\x20!c011.valid\x20||\x20!c111.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20bottom\x20=\x20mix(mix(c000.value,\x20c100.value,\x20fraction.x),\x20mix(c010.value,\x20c110.value,\x20fraction.x),\x20fraction.y);\x0a\x20\x20\x20\x20let\x20top\x20=\x20mix(mix(c001.value,\x20c101.value,\x20fraction.x),\x20mix(c011.value,\x20c111.value,\x20fraction.x),\x20fraction.y);\x0a\x20\x20\x20\x20return\x20validVolumeSample(mix(bottom,\x20top,\x20fraction.z));\x0a}\x0a\x0afn\x20sampleColor(value:\x20f32)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.x);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20colorStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20colorStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20colorStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(colorStopColors.values[index],\x20colorStopColors.values[index\x20+\x201u],\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20colorStopColors.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20sampleOpacity(value:\x20f32)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.y);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20opacityStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20opacityStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20opacityStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(opacityStopAlphas.values[index],\x20opacityStopAlphas.values[index\x20+\x201u],\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20opacityStopAlphas.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20getPlanePosition(axis:\x20u32,\x20planePosition:\x20f32,\x20corner:\x20vec2f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(axis\x20==\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec3f(planePosition,\x20corner.x,\x20corner.y);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(axis\x20==\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec3f(corner.x,\x20planePosition,\x20corner.y);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20vec3f(corner.x,\x20corner.y,\x20planePosition);\x0a}\x0a\x0afn\x20getCorner(vertexIndex:\x20u32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20let\x20corners\x20=\x20array<vec2f,\x206>(\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec2f(0.0,\x200.0),\x20vec2f(1.0,\x200.0),\x20vec2f(0.0,\x201.0),\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec2f(0.0,\x201.0),\x20vec2f(1.0,\x200.0),\x20vec2f(1.0,\x201.0)\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20corners[vertexIndex];\x0a}\x0a\x0afn\x20getTessellatedCorner(vertexIndex:\x20u32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20let\x20gridSize\x20=\x2032u;\x0a\x20\x20\x20\x20let\x20cellIndex\x20=\x20vertexIndex\x20/\x206u;\x0a\x20\x20\x20\x20let\x20cellX\x20=\x20cellIndex\x20%\x20gridSize;\x0a\x20\x20\x20\x20let\x20cellY\x20=\x20cellIndex\x20/\x20gridSize;\x0a\x20\x20\x20\x20return\x20(vec2f(f32(cellX),\x20f32(cellY))\x20+\x20getCorner(vertexIndex\x20%\x206u))\x20/\x20f32(gridSize);\x0a}\x0a\x0afn\x20volumeToWorld(position:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20transformed\x20=\x20scene.modelMatrix\x20*\x20vec4f(position,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20transformed.xyz\x20/\x20transformed.w;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20mix(scene.geographic1.z,\x20scene.geographic1.w,\x20position.x);\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20mix(scene.geographic2.x,\x20scene.geographic2.y,\x20position.z);\x0a\x20\x20\x20\x20let\x20height\x20=\x20mix(scene.geographic2.z,\x20scene.geographic2.w,\x20position.y);\x0a\x20\x20\x20\x20let\x20latitudeSin\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20let\x20latitudeCos\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20let\x20semiMajor\x20=\x20scene.geographic1.x;\x0a\x20\x20\x20\x20let\x20semiMinor\x20=\x20scene.geographic1.y;\x0a\x20\x20\x20\x20let\x20eccentricitySquared\x20=\x201.0\x20-\x20semiMinor\x20*\x20semiMinor\x20/\x20(semiMajor\x20*\x20semiMajor);\x0a\x20\x20\x20\x20let\x20primeVerticalRadius\x20=\x20semiMajor\x20/\x20sqrt(1.0\x20-\x20eccentricitySquared\x20*\x20latitudeSin\x20*\x20latitudeSin);\x0a\x20\x20\x20\x20let\x20ecef\x20=\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20cos(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20sin(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20*\x20(1.0\x20-\x20eccentricitySquared)\x20+\x20height)\x20*\x20latitudeSin\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20ecef\x20-\x20scene.geographic0.yzw;\x0a}\x0a\x0a@vertex\x0afn\x20vertexMain(@builtin(vertex_index)\x20vertexIndex:\x20u32)\x20->\x20SliceVertexOutput\x20{\x0a\x20\x20\x20\x20let\x20modelPosition\x20=\x20getPlanePosition(u32(slice.data.x),\x20slice.data.y,\x20getTessellatedCorner(vertexIndex));\x0a\x20\x20\x20\x20let\x20clipPosition\x20=\x20scene.viewProjection\x20*\x20vec4f(volumeToWorld(modelPosition),\x201.0);\x0a\x20\x20\x20\x20return\x20SliceVertexOutput(clipPosition,\x20modelPosition);\x0a}\x0a\x0a@fragment\x0afn\x20fragmentMain(input:\x20SliceVertexOutput)\x20->\x20@location(0)\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20sample\x20=\x20sampleVolume(input.modelPosition);\x0a\x20\x20\x20\x20let\x20plateAlpha\x20=\x20slice.plateColor.a;\x0a\x20\x20\x20\x20let\x20platePremultiplied\x20=\x20slice.plateColor.rgb\x20*\x20plateAlpha;\x0a\x0a\x20\x20\x20\x20if\x20(!sample.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(plateAlpha\x20<=\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec4f(platePremultiplied,\x20plateAlpha);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20color\x20=\x20sampleColor(sample.value);\x0a\x20\x20\x20\x20let\x20alpha\x20=\x20color.a\x20*\x20sampleOpacity(sample.value)\x20*\x20slice.data.z;\x0a\x20\x20\x20\x20//\x20彩色数据覆盖白色透明底板,二者在同一\x20fragment\x20中合成以避免重合面的深度冲突。\x0a\x20\x20\x20\x20//\x20Colored\x20data\x20is\x20composited\x20over\x20the\x20translucent\x20white\x20plate\x20in\x20one\x20fragment\x20to\x20avoid\x20coplanar\x20depth\x20conflicts.\x0a\x20\x20\x20\x20let\x20outputAlpha\x20=\x20alpha\x20+\x20plateAlpha\x20*\x20(1.0\x20-\x20alpha);\x0a\x20\x20\x20\x20let\x20outputColor\x20=\x20color.rgb\x20*\x20alpha\x20+\x20platePremultiplied\x20*\x20(1.0\x20-\x20alpha);\x0a\x20\x20\x20\x20return\x20vec4f(outputColor,\x20outputAlpha);\x0a}\x0a','vertexCount','#fff','cachedProfiles','BYTES_PER_ELEMENT','height','aborted','requestDevice','STORAGE_BINDING','minimumPitchDegrees','target','4413876jxdSlV','forEach','A\x20destroyed\x20WebGPU\x20volume\x20renderer\x20cannot\x20be\x20initialized\x20again.\x20已销毁的\x20WebGPU\x20体积渲染器不能再次初始化。','densityScale','flatMap','then','createValues','\x20range\x20is\x20invalid:\x20start=','origin','volume\x20scene\x20depth','now','captureFrame','source','cacheBrickUpload','uniform','flushBrickSchedule','translate(-50%,\x20-100%)','handleFrameAvailable','opacityStopCount','xAxis','createGpuResources','drawSlices','startY','opacityBuffer','\x20范围无效。','sceneBindGroup','depthView','nowrap','interactionRenderScale','Volume\x20opacity\x20stops\x20must\x20be\x20between\x20zero\x20and\x20one.\x20体积透明度色标必须位于零到一之间。','相机裁剪距离必须满足\x200\x20<=\x20near\x20<\x20far。','less','brickDepth','container','Volume\x20timeCount','has','sceneParamsBuffer','volumeMetadata','function','17094YcPwyu','yAxis','3888bIaxuA','0\x202px','matrices','countX','geometryBindGroupLayout'];_0x18f2=function(){return _0x585181;};return _0x18f2();}function _0x44e0(_0x3efae8,_0x3db740){const _0x18f2b5=_0x18f2();return _0x44e0=function(_0x44e0c2,_0x17f083){_0x44e0c2=_0x44e0c2-0x12c;let _0x3574d6=_0x18f2b5[_0x44e0c2];return _0x3574d6;},_0x44e0(_0x3efae8,_0x3db740);}(function(_0x8640eb,_0x2c848f){const _0x24a2f8=_0x44e0,_0x51cae2=_0x8640eb();while(!![]){try{const _0x3c4b7c=-parseInt(_0x24a2f8(0x37e))/0x1*(parseInt(_0x24a2f8(0x3f6))/0x2)+parseInt(_0x24a2f8(0x192))/0x3*(parseInt(_0x24a2f8(0x433))/0x4)+-parseInt(_0x24a2f8(0x236))/0x5*(parseInt(_0x24a2f8(0x294))/0x6)+-parseInt(_0x24a2f8(0x455))/0x7*(-parseInt(_0x24a2f8(0x296))/0x8)+parseInt(_0x24a2f8(0x2b3))/0x9+-parseInt(_0x24a2f8(0x131))/0xa+-parseInt(_0x24a2f8(0x404))/0xb*(parseInt(_0x24a2f8(0x26d))/0xc);if(_0x3c4b7c===_0x2c848f)break;else _0x51cae2['push'](_0x51cae2['shift']());}catch(_0xbc2f24){_0x51cae2['push'](_0x51cae2['shift']());}}}(_0x18f2,0xb839a),function(_0x54e2ee,_0x44def1){const _0x5a5e0c=_0x44e0;typeof exports==_0x5a5e0c(0x322)&&typeof module<'u'?_0x44def1(exports):typeof define==_0x5a5e0c(0x293)&&define['amd']?define(['exports'],_0x44def1):(_0x54e2ee=typeof globalThis<'u'?globalThis:_0x54e2ee||self,_0x44def1(_0x54e2ee[_0x5a5e0c(0x446)]={}));}(this,function(_0x374797){const _0x59dd37=_0x44e0;Object[_0x59dd37(0x456)](_0x374797,Symbol[_0x59dd37(0x309)],{'value':_0x59dd37(0x141)});let _0x341741=(_0x53020d,_0x348b21)=>{const _0x3c57a5=_0x59dd37;if(!Number[_0x3c57a5(0x333)](_0x53020d)||_0x53020d<=0x0)throw Error(_0x348b21+'\x20must\x20be\x20a\x20positive\x20integer.\x20'+_0x348b21+'\x20必须是正整数。');},_0x383e78=(_0x11981a,_0x5c2d58)=>{const _0x3813db=_0x59dd37;if(_0x341741(_0x11981a['count'],_0x5c2d58+_0x3813db(0x196)),!Number[_0x3813db(0x42c)](_0x11981a[_0x3813db(0x1cf)])||!Number['isFinite'](_0x11981a[_0x3813db(0x326)]))throw Error(_0x5c2d58+_0x3813db(0x2c8)+_0x5c2d58+'\x20端点必须是有限数值。');if(_0x11981a['count']===0x1&&_0x11981a[_0x3813db(0x1cf)]!==_0x11981a['end'])throw Error(_0x5c2d58+_0x3813db(0x385)+_0x5c2d58+_0x3813db(0x17e));if(_0x11981a[_0x3813db(0x399)]>0x1&&_0x11981a[_0x3813db(0x1cf)]===_0x11981a[_0x3813db(0x326)])throw Error(_0x5c2d58+_0x3813db(0x409)+_0x5c2d58+_0x3813db(0x335));},_0x93e7d=(_0x4a5624,_0x5f0808)=>{const _0x32e974=_0x59dd37;if(_0x4a5624!==void 0x0&&!Number[_0x32e974(0x42c)](_0x4a5624)&&!Number['isNaN'](_0x4a5624))throw Error(_0x5f0808+'\x20noData\x20must\x20be\x20finite\x20or\x20NaN.\x20'+_0x5f0808+_0x32e974(0x44f));},_0xc8e012=(_0x9cefcb,_0x2e0b8a)=>_0x9cefcb['xStart']===_0x2e0b8a['xStart']&&_0x9cefcb['xCount']===_0x2e0b8a['xCount']&&_0x9cefcb[_0x59dd37(0x1b4)]===_0x2e0b8a['levelStart']&&_0x9cefcb['levelCount']===_0x2e0b8a[_0x59dd37(0x3c0)]&&_0x9cefcb[_0x59dd37(0x1a1)]===_0x2e0b8a[_0x59dd37(0x1a1)]&&_0x9cefcb[_0x59dd37(0x2cc)]===_0x2e0b8a[_0x59dd37(0x2cc)],_0xa250c4=_0x16bf20=>{const _0x5ec768=_0x59dd37;if(_0x383e78(_0x16bf20['xAxis'],_0x5ec768(0x3fd)),_0x383e78(_0x16bf20['yAxis'],_0x5ec768(0x32f)),_0x383e78(_0x16bf20[_0x5ec768(0x3ba)],_0x5ec768(0x1d7)),_0x341741(_0x16bf20['timeCount'],_0x5ec768(0x28f)),_0x93e7d(_0x16bf20[_0x5ec768(0x2e1)],_0x5ec768(0x426)),_0x16bf20[_0x5ec768(0x438)]!==void 0x0&&!Number[_0x5ec768(0x42c)](_0x16bf20[_0x5ec768(0x438)]))throw Error(_0x5ec768(0x338));if(_0x16bf20[_0x5ec768(0x133)]!==void 0x0&&(!Number[_0x5ec768(0x333)](_0x16bf20['revision'])||_0x16bf20[_0x5ec768(0x133)]<0x0))throw Error(_0x5ec768(0x237));},_0x3a1c32=(_0x48657f,_0x2a6c6b)=>{const _0x4e9de3=_0x59dd37;if(!Number[_0x4e9de3(0x333)](_0x2a6c6b)||_0x2a6c6b<0x0||_0x2a6c6b>=_0x48657f[_0x4e9de3(0x1a2)])throw Error('Volume\x20timeIndex\x20is\x20out\x20of\x20range:\x20'+_0x2a6c6b+_0x4e9de3(0x191));},_0x175840=(_0x3de96d,_0x4b95c3)=>{const _0x1eaa4f=_0x59dd37;let _0x24b49d=[[_0x4b95c3[_0x1eaa4f(0x2ae)],_0x1eaa4f(0x2ae)],[_0x4b95c3[_0x1eaa4f(0x35b)],_0x1eaa4f(0x35b)],[_0x4b95c3['levelStart'],'levelStart'],[_0x4b95c3['levelCount'],_0x1eaa4f(0x3c0)],[_0x4b95c3[_0x1eaa4f(0x1a1)],'sourceYStart'],[_0x4b95c3[_0x1eaa4f(0x2cc)],_0x1eaa4f(0x2cc)]];for(let [_0x35783e,_0x98609c]of _0x24b49d)if(!Number[_0x1eaa4f(0x333)](_0x35783e)||_0x35783e<0x0||_0x98609c[_0x1eaa4f(0x2f0)](_0x1eaa4f(0x1dd))&&_0x35783e===0x0)throw Error('Volume\x20chunk\x20'+_0x98609c+_0x1eaa4f(0x1ea)+_0x35783e+_0x1eaa4f(0x12e)+_0x98609c+'\x20无效。');if(_0x4b95c3['xStart']+_0x4b95c3[_0x1eaa4f(0x35b)]>_0x3de96d[_0x1eaa4f(0x280)][_0x1eaa4f(0x399)]||_0x4b95c3[_0x1eaa4f(0x1b4)]+_0x4b95c3[_0x1eaa4f(0x3c0)]>_0x3de96d['yAxis'][_0x1eaa4f(0x399)]||_0x4b95c3[_0x1eaa4f(0x1a1)]+_0x4b95c3[_0x1eaa4f(0x2cc)]>_0x3de96d['zAxis'][_0x1eaa4f(0x399)])throw Error(_0x1eaa4f(0x2bd));},_0x4e9beb=(_0x1a3d66,_0x2850b0,_0x3b4769,_0x5bcb11)=>{const _0x34b8e5=_0x59dd37;if(_0x3a1c32(_0x1a3d66,_0x2850b0[_0x34b8e5(0x441)]),_0x175840(_0x1a3d66,_0x2850b0[_0x34b8e5(0x1e3)]),_0x5bcb11!==void 0x0&&_0x2850b0['timeIndex']!==_0x5bcb11)throw Error('Returned\x20volume\x20chunk\x20timeIndex\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块的时间索引与请求不一致。');if(_0x3b4769&&!_0xc8e012(_0x2850b0[_0x34b8e5(0x1e3)],_0x3b4769))throw Error(_0x34b8e5(0x171));if(_0x2850b0[_0x34b8e5(0x31e)]!==_0x2850b0[_0x34b8e5(0x1e3)][_0x34b8e5(0x35b)]||_0x2850b0['height']!==_0x2850b0[_0x34b8e5(0x1e3)][_0x34b8e5(0x3c0)]||_0x2850b0[_0x34b8e5(0x43f)]!==_0x2850b0[_0x34b8e5(0x1e3)][_0x34b8e5(0x2cc)])throw Error(_0x34b8e5(0x13d));let _0x308909=_0x2850b0['width']*_0x2850b0[_0x34b8e5(0x267)]*_0x2850b0['depth'];if(!Number[_0x34b8e5(0x35a)](_0x308909)||_0x2850b0['values'][_0x34b8e5(0x2ec)]!==_0x308909)throw Error('Volume\x20chunk\x20requires\x20'+_0x308909+_0x34b8e5(0x260)+_0x2850b0['values']['length']+'.\x20体积分块数值数量与尺寸不一致。');},_0x55026c=_0xfd790c=>{const _0x594411=_0x59dd37;if(!_0xfd790c||typeof _0xfd790c[_0x594411(0x39a)]!=_0x594411(0x293))throw Error('Volume\x20source\x20must\x20provide\x20readChunk().\x20体积数据源必须提供\x20readChunk()。');_0xa250c4(_0xfd790c[_0x594411(0x2b0)]);},_0x5250b0=_0x532b1b=>{const _0x1755a5=_0x59dd37;for(let [_0x549942,_0x248241]of[[_0x532b1b[_0x1755a5(0x31e)],_0x1755a5(0x31e)],[_0x532b1b[_0x1755a5(0x267)],_0x1755a5(0x267)],[_0x532b1b['depth'],'depth']])if(!Number[_0x1755a5(0x333)](_0x549942)||_0x549942<=0x0)throw Error(_0x1755a5(0x2f6)+_0x248241+_0x1755a5(0x3f1)+_0x248241+_0x1755a5(0x3ae));if(!Number[_0x1755a5(0x333)](_0x532b1b[_0x1755a5(0x3e8)])||_0x532b1b[_0x1755a5(0x3e8)]<0x1)throw Error(_0x1755a5(0x1ed));},_0x8255a6=(_0x4179e2={})=>{const _0x44b984=_0x59dd37;let _0x4146f2={'width':_0x4179e2[_0x44b984(0x31e)]??0x100,'height':_0x4179e2[_0x44b984(0x267)]??0x8,'depth':_0x4179e2[_0x44b984(0x43f)]??0x100,'halo':_0x4179e2[_0x44b984(0x3e8)]??0x1};return _0x5250b0(_0x4146f2),_0x4146f2;},_0x29795f=(_0x503b07,_0x545e97={})=>{const _0x3f4869=_0x59dd37;_0xa250c4(_0x503b07);let _0x5be542=_0x8255a6(_0x545e97),_0x3e275=Math[_0x3f4869(0x172)](_0x503b07['xAxis'][_0x3f4869(0x399)]/_0x5be542['width']),_0x2f87d=Math[_0x3f4869(0x172)](_0x503b07['yAxis'][_0x3f4869(0x399)]/_0x5be542[_0x3f4869(0x267)]),_0x11c08a=Math[_0x3f4869(0x172)](_0x503b07[_0x3f4869(0x3ba)]['count']/_0x5be542[_0x3f4869(0x43f)]);return{'shape':_0x5be542,'countX':_0x3e275,'countY':_0x2f87d,'countZ':_0x11c08a,'brickCount':_0x3e275*_0x2f87d*_0x11c08a};},_0x1de316=_0x3b0a6d=>_0x3b0a6d['x']+':'+_0x3b0a6d['y']+':'+_0x3b0a6d['z'],_0x285fde=(_0x3134e4,_0x51aeb9,_0x322eeb)=>{const _0x2a2d0e=_0x59dd37;if(!Number[_0x2a2d0e(0x333)](_0x322eeb['x'])||!Number['isInteger'](_0x322eeb['y'])||!Number['isInteger'](_0x322eeb['z'])||_0x322eeb['x']<0x0||_0x322eeb['x']>=_0x51aeb9[_0x2a2d0e(0x299)]||_0x322eeb['y']<0x0||_0x322eeb['y']>=_0x51aeb9[_0x2a2d0e(0x140)]||_0x322eeb['z']<0x0||_0x322eeb['z']>=_0x51aeb9[_0x2a2d0e(0x445)])throw Error(_0x2a2d0e(0x2ee));let _0x10e9b2=_0x322eeb['x']*_0x51aeb9['shape'][_0x2a2d0e(0x31e)],_0x6d70b2=_0x322eeb['y']*_0x51aeb9[_0x2a2d0e(0x382)][_0x2a2d0e(0x267)],_0x18751a=_0x322eeb['z']*_0x51aeb9['shape'][_0x2a2d0e(0x43f)],_0x43ac8f=Math['min'](_0x51aeb9['shape'][_0x2a2d0e(0x31e)],_0x3134e4[_0x2a2d0e(0x280)][_0x2a2d0e(0x399)]-_0x10e9b2),_0x582f1b=Math[_0x2a2d0e(0x37d)](_0x51aeb9['shape']['height'],_0x3134e4[_0x2a2d0e(0x295)][_0x2a2d0e(0x399)]-_0x6d70b2),_0x5b3775=Math[_0x2a2d0e(0x37d)](_0x51aeb9[_0x2a2d0e(0x382)][_0x2a2d0e(0x43f)],_0x3134e4[_0x2a2d0e(0x3ba)][_0x2a2d0e(0x399)]-_0x18751a),_0x25cb20=_0x51aeb9[_0x2a2d0e(0x382)][_0x2a2d0e(0x3e8)],_0x546e28=Math[_0x2a2d0e(0x447)](0x0,_0x10e9b2-_0x25cb20),_0x2dab1f=Math[_0x2a2d0e(0x447)](0x0,_0x6d70b2-_0x25cb20),_0x7cb291=Math[_0x2a2d0e(0x447)](0x0,_0x18751a-_0x25cb20),_0x17e689=Math[_0x2a2d0e(0x37d)](_0x3134e4[_0x2a2d0e(0x280)]['count'],_0x10e9b2+_0x43ac8f+_0x25cb20),_0x5b68aa=Math['min'](_0x3134e4[_0x2a2d0e(0x295)][_0x2a2d0e(0x399)],_0x6d70b2+_0x582f1b+_0x25cb20),_0x3c78d6=Math[_0x2a2d0e(0x37d)](_0x3134e4['zAxis']['count'],_0x18751a+_0x5b3775+_0x25cb20),_0x4725c2=_0x51aeb9[_0x2a2d0e(0x382)][_0x2a2d0e(0x31e)]+_0x25cb20*0x2,_0x582fae=_0x51aeb9[_0x2a2d0e(0x382)][_0x2a2d0e(0x267)]+_0x25cb20*0x2,_0x4c276f=_0x51aeb9[_0x2a2d0e(0x382)]['depth']+_0x25cb20*0x2;return{'key':_0x1de316(_0x322eeb),'coordinate':_0x322eeb,'coreRange':{'xStart':_0x10e9b2,'xCount':_0x43ac8f,'levelStart':_0x6d70b2,'levelCount':_0x582f1b,'sourceYStart':_0x18751a,'sourceYCount':_0x5b3775},'readRange':{'xStart':_0x546e28,'xCount':_0x17e689-_0x546e28,'levelStart':_0x2dab1f,'levelCount':_0x5b68aa-_0x2dab1f,'sourceYStart':_0x7cb291,'sourceYCount':_0x3c78d6-_0x7cb291},'physicalWidth':_0x4725c2,'physicalHeight':_0x582fae,'physicalDepth':_0x4c276f,'byteLength':_0x4725c2*_0x582fae*_0x4c276f*Float32Array[_0x2a2d0e(0x266)]};},_0x3d58ec=(_0x44a188,_0x3fc5c7)=>{const _0x239d84=_0x59dd37;let _0x3ff7bd=[];for(let _0x419964=0x0;_0x419964<_0x3fc5c7[_0x239d84(0x445)];_0x419964+=0x1)for(let _0x1ebecf=0x0;_0x1ebecf<_0x3fc5c7[_0x239d84(0x140)];_0x1ebecf+=0x1)for(let _0x84cef5=0x0;_0x84cef5<_0x3fc5c7['countX'];_0x84cef5+=0x1)_0x3ff7bd[_0x239d84(0x222)](_0x285fde(_0x44a188,_0x3fc5c7,{'x':_0x84cef5,'y':_0x1ebecf,'z':_0x419964}));return _0x3ff7bd;},_0x375d5b=1e-8,_0x2c9587=()=>new Float32Array(0x10),_0x2ed75e=(_0x856650,_0x4d6922)=>_0x856650[0x0]*_0x4d6922[0x0]+_0x856650[0x1]*_0x4d6922[0x1]+_0x856650[0x2]*_0x4d6922[0x2],_0x99d867=(_0x27e58f,_0x3c6def)=>[_0x27e58f[0x0]-_0x3c6def[0x0],_0x27e58f[0x1]-_0x3c6def[0x1],_0x27e58f[0x2]-_0x3c6def[0x2]],_0x269f25=(_0x2fe163,_0x237efe)=>[_0x2fe163[0x1]*_0x237efe[0x2]-_0x2fe163[0x2]*_0x237efe[0x1],_0x2fe163[0x2]*_0x237efe[0x0]-_0x2fe163[0x0]*_0x237efe[0x2],_0x2fe163[0x0]*_0x237efe[0x1]-_0x2fe163[0x1]*_0x237efe[0x0]],_0x444d60=_0x2937e3=>{const _0x2dd2db=_0x59dd37;let _0x14ec7f=Math[_0x2dd2db(0x3f0)](_0x2937e3[0x0],_0x2937e3[0x1],_0x2937e3[0x2]);if(_0x14ec7f<=_0x375d5b)throw Error(_0x2dd2db(0x408));return[_0x2937e3[0x0]/_0x14ec7f,_0x2937e3[0x1]/_0x14ec7f,_0x2937e3[0x2]/_0x14ec7f];},_0x1af96f=()=>{let _0x2d24fb=_0x2c9587();return _0x2d24fb[0x0]=0x1,_0x2d24fb[0x5]=0x1,_0x2d24fb[0xa]=0x1,_0x2d24fb[0xf]=0x1,_0x2d24fb;},_0x2b96ab=(_0x274681,_0x4221d3)=>{let _0x45e5b2=_0x2c9587();for(let _0xa4ee0a=0x0;_0xa4ee0a<0x4;_0xa4ee0a+=0x1)for(let _0x5be41c=0x0;_0x5be41c<0x4;_0x5be41c+=0x1){let _0x9f634d=0x0;for(let _0x556c72=0x0;_0x556c72<0x4;_0x556c72+=0x1)_0x9f634d+=_0x274681[_0x556c72*0x4+_0x5be41c]*_0x4221d3[_0xa4ee0a*0x4+_0x556c72];_0x45e5b2[_0xa4ee0a*0x4+_0x5be41c]=_0x9f634d;}return _0x45e5b2;},_0x17a1a7=_0x182870=>{let _0x13db0c=Array['from']({'length':0x4},(_0x4d8bdc,_0x145d10)=>{let _0x4ba6de=new Float64Array(0x8);for(let _0x4d954f=0x0;_0x4d954f<0x4;_0x4d954f+=0x1)_0x4ba6de[_0x4d954f]=_0x182870[_0x4d954f*0x4+_0x145d10];return _0x4ba6de[_0x145d10+0x4]=0x1,_0x4ba6de;});for(let _0x199b38=0x0;_0x199b38<0x4;_0x199b38+=0x1){let _0x47d437=_0x199b38;for(let _0x12b998=_0x199b38+0x1;_0x12b998<0x4;_0x12b998+=0x1)Math['abs'](_0x13db0c[_0x12b998][_0x199b38])>Math['abs'](_0x13db0c[_0x47d437][_0x199b38])&&(_0x47d437=_0x12b998);if(Math['abs'](_0x13db0c[_0x47d437][_0x199b38])<=_0x375d5b)throw Error('矩阵不可逆。');_0x47d437!==_0x199b38&&([_0x13db0c[_0x199b38],_0x13db0c[_0x47d437]]=[_0x13db0c[_0x47d437],_0x13db0c[_0x199b38]]);let _0x263f0f=_0x13db0c[_0x199b38][_0x199b38];for(let _0x248036=0x0;_0x248036<0x8;_0x248036+=0x1)_0x13db0c[_0x199b38][_0x248036]/=_0x263f0f;for(let _0x2d6d37=0x0;_0x2d6d37<0x4;_0x2d6d37+=0x1){if(_0x2d6d37===_0x199b38)continue;let _0x5c8493=_0x13db0c[_0x2d6d37][_0x199b38];for(let _0x5251b5=0x0;_0x5251b5<0x8;_0x5251b5+=0x1)_0x13db0c[_0x2d6d37][_0x5251b5]-=_0x5c8493*_0x13db0c[_0x199b38][_0x5251b5];}}let _0x4e0eae=_0x2c9587();for(let _0x136495=0x0;_0x136495<0x4;_0x136495+=0x1)for(let _0x4d6160=0x0;_0x4d6160<0x4;_0x4d6160+=0x1)_0x4e0eae[_0x4d6160*0x4+_0x136495]=_0x13db0c[_0x136495][_0x4d6160+0x4];return _0x4e0eae;},_0x3cb030=(_0x34d775,_0x1fa687,_0x35d551)=>{let _0x417d8f=_0x444d60(_0x99d867(_0x34d775,_0x1fa687)),_0x3809a0=_0x444d60(_0x269f25(_0x35d551,_0x417d8f)),_0x26f884=_0x269f25(_0x417d8f,_0x3809a0),_0x5a4b99=_0x1af96f();return _0x5a4b99[0x0]=_0x3809a0[0x0],_0x5a4b99[0x1]=_0x26f884[0x0],_0x5a4b99[0x2]=_0x417d8f[0x0],_0x5a4b99[0x4]=_0x3809a0[0x1],_0x5a4b99[0x5]=_0x26f884[0x1],_0x5a4b99[0x6]=_0x417d8f[0x1],_0x5a4b99[0x8]=_0x3809a0[0x2],_0x5a4b99[0x9]=_0x26f884[0x2],_0x5a4b99[0xa]=_0x417d8f[0x2],_0x5a4b99[0xc]=-_0x2ed75e(_0x3809a0,_0x34d775),_0x5a4b99[0xd]=-_0x2ed75e(_0x26f884,_0x34d775),_0x5a4b99[0xe]=-_0x2ed75e(_0x417d8f,_0x34d775),_0x5a4b99;},_0x38630c=(_0x2c2a3d,_0x14b04b,_0x25b575,_0x4871b9)=>{const _0x2db17c=_0x59dd37;if(!(_0x2c2a3d>0x0&&_0x2c2a3d<Math['PI']))throw Error(_0x2db17c(0x2a0));if(!(_0x14b04b>0x0))throw Error(_0x2db17c(0x179));if(!(_0x25b575>0x0&&_0x4871b9>_0x25b575))throw Error(_0x2db17c(0x29e));let _0x8e651c=0x1/Math[_0x2db17c(0x3ef)](_0x2c2a3d/0x2),_0x12678b=_0x2c9587();return _0x12678b[0x0]=_0x8e651c/_0x14b04b,_0x12678b[0x5]=_0x8e651c,_0x12678b[0xa]=_0x4871b9/(_0x25b575-_0x4871b9),_0x12678b[0xb]=-0x1,_0x12678b[0xe]=_0x25b575*_0x4871b9/(_0x25b575-_0x4871b9),_0x12678b;},_0x325296=(_0xd54d76,_0x58f813,_0x1f3221,_0x1fc803)=>{const _0x4bc953=_0x59dd37;if(!(_0xd54d76>0x0&&_0x58f813>0x0))throw Error(_0x4bc953(0x1bc));if(!(_0x1f3221>=0x0&&_0x1fc803>_0x1f3221))throw Error(_0x4bc953(0x28b));let _0x52442d=_0xd54d76*_0x58f813,_0x25f858=_0x1af96f();return _0x25f858[0x0]=0x2/_0x52442d,_0x25f858[0x5]=0x2/_0xd54d76,_0x25f858[0xa]=0x1/(_0x1f3221-_0x1fc803),_0x25f858[0xe]=_0x1f3221/(_0x1f3221-_0x1fc803),_0x25f858;},_0x5f54e8=(_0x364dd5,_0x54cf85,_0x2ea656)=>{let _0x29740e=_0x1af96f();return _0x29740e[0x0]=_0x364dd5,_0x29740e[0x5]=_0x54cf85,_0x29740e[0xa]=_0x2ea656,_0x29740e;},_0x826bf7=(_0x171be9,_0x184362)=>{const _0x19473e=_0x59dd37;if(!(_0x184362>0x0)||!Number[_0x19473e(0x42c)](_0x184362))throw Error('verticalScale\x20必须是大于\x200\x20的有限数。');let _0x3fa4e8=_0x5f54e8(0x1,_0x184362,0x1);return _0x171be9?_0x2b96ab(_0x171be9,_0x3fa4e8):_0x3fa4e8;},_0x1ccc57=(_0xc3576a,_0xe0c4a0,_0xc941ea=0x1)=>[_0xc3576a[0x0]*_0xe0c4a0[0x0]+_0xc3576a[0x4]*_0xe0c4a0[0x1]+_0xc3576a[0x8]*_0xe0c4a0[0x2]+_0xc3576a[0xc]*_0xc941ea,_0xc3576a[0x1]*_0xe0c4a0[0x0]+_0xc3576a[0x5]*_0xe0c4a0[0x1]+_0xc3576a[0x9]*_0xe0c4a0[0x2]+_0xc3576a[0xd]*_0xc941ea,_0xc3576a[0x2]*_0xe0c4a0[0x0]+_0xc3576a[0x6]*_0xe0c4a0[0x1]+_0xc3576a[0xa]*_0xe0c4a0[0x2]+_0xc3576a[0xe]*_0xc941ea,_0xc3576a[0x3]*_0xe0c4a0[0x0]+_0xc3576a[0x7]*_0xe0c4a0[0x1]+_0xc3576a[0xb]*_0xe0c4a0[0x2]+_0xc3576a[0xf]*_0xc941ea],_0x56b9ae=(_0x40a64b,_0x3c35e5,_0x3882ad,_0x4c9f05)=>{let _0x1ff8c1=_0x1ccc57(_0x40a64b,_0x3c35e5);if(_0x1ff8c1[0x3]<=_0x375d5b)return null;let _0x22827e=0x1/_0x1ff8c1[0x3];return[(_0x1ff8c1[0x0]*_0x22827e*0.5+0.5)*_0x3882ad,(0.5-_0x1ff8c1[0x1]*_0x22827e*0.5)*_0x4c9f05,_0x1ff8c1[0x2]*_0x22827e];},_0x57ff6e=[0x0,0x1,0x2],_0x4e1922=[0x0,0x0,0x0],_0x9b0906=[0x0,0x1,0x0],_0x3abcc2={'type':_0x59dd37(0x41a),'fovYDegrees':0x2d,'near':0.01,'far':0x2710},_0x990b99=Math['PI']/0xb4,_0xd282d4=_0x5a3d78=>[_0x5a3d78[0x0],_0x5a3d78[0x1],_0x5a3d78[0x2]],_0x40dd9c=_0x50bd75=>(_0x50bd75[_0x59dd37(0x2a2)],{..._0x50bd75}),_0x10f260=_0x3dae63=>({'position':_0xd282d4(_0x3dae63[_0x59dd37(0x448)]),'target':_0xd282d4(_0x3dae63['target']),'up':_0xd282d4(_0x3dae63['up']),'projection':_0x40dd9c(_0x3dae63[_0x59dd37(0x240)])}),_0x1f74bc=(_0x49c078,_0x36008f)=>[_0x49c078[0x0]-_0x36008f[0x0],_0x49c078[0x1]-_0x36008f[0x1],_0x49c078[0x2]-_0x36008f[0x2]],_0xd89588=(_0x6d9c91,_0x4c01a4)=>[_0x6d9c91[0x0]+_0x4c01a4[0x0],_0x6d9c91[0x1]+_0x4c01a4[0x1],_0x6d9c91[0x2]+_0x4c01a4[0x2]],_0x3759f4=(_0x42c1e3,_0x24c8ec)=>[_0x42c1e3[0x0]*_0x24c8ec,_0x42c1e3[0x1]*_0x24c8ec,_0x42c1e3[0x2]*_0x24c8ec],_0x235060=(_0x24da31,_0x3eecf4)=>[_0x24da31[0x1]*_0x3eecf4[0x2]-_0x24da31[0x2]*_0x3eecf4[0x1],_0x24da31[0x2]*_0x3eecf4[0x0]-_0x24da31[0x0]*_0x3eecf4[0x2],_0x24da31[0x0]*_0x3eecf4[0x1]-_0x24da31[0x1]*_0x3eecf4[0x0]],_0x2d1d5e=_0x57644c=>{const _0x46a532=_0x59dd37;let _0x1c843b=Math[_0x46a532(0x3f0)](_0x57644c[0x0],_0x57644c[0x1],_0x57644c[0x2]);return _0x1c843b===0x0?[0x0,0x0,0x0]:_0x3759f4(_0x57644c,0x1/_0x1c843b);},_0x581aa1=(_0x1938e8,_0x59a461,_0x208cb1)=>Math['min'](_0x208cb1,Math[_0x59dd37(0x447)](_0x59a461,_0x1938e8)),_0x5dab4b=_0x48f350=>{const _0x16fbb1=_0x59dd37;if(!(_0x48f350[_0x16fbb1(0x3ad)]>=0x0&&_0x48f350['far']>_0x48f350[_0x16fbb1(0x3ad)]))throw Error(_0x16fbb1(0x28b));if(_0x48f350['type']===_0x16fbb1(0x41a)&&!(_0x48f350[_0x16fbb1(0x3ad)]>0x0&&_0x48f350[_0x16fbb1(0x337)]>0x0&&_0x48f350[_0x16fbb1(0x337)]<0xb4))throw Error(_0x16fbb1(0x149));if(_0x48f350[_0x16fbb1(0x2a2)]===_0x16fbb1(0x3bc)&&!(_0x48f350['height']>0x0))throw Error('正交相机高度必须大于\x200。');},_0x40573c=_0x43fb58=>{const _0xe2cb22=_0x59dd37;let _0x2260bd={'position':_0x43fb58['state']?.[_0xe2cb22(0x448)]?_0xd282d4(_0x43fb58[_0xe2cb22(0x1a5)][_0xe2cb22(0x448)]):_0xd282d4(_0x57ff6e),'target':_0x43fb58[_0xe2cb22(0x1a5)]?.[_0xe2cb22(0x26c)]?_0xd282d4(_0x43fb58[_0xe2cb22(0x1a5)][_0xe2cb22(0x26c)]):_0xd282d4(_0x4e1922),'up':_0x43fb58[_0xe2cb22(0x1a5)]?.['up']?_0xd282d4(_0x43fb58[_0xe2cb22(0x1a5)]['up']):_0xd282d4(_0x9b0906),'projection':_0x43fb58[_0xe2cb22(0x1a5)]?.[_0xe2cb22(0x240)]?_0x40dd9c(_0x43fb58[_0xe2cb22(0x1a5)]['projection']):_0x40dd9c(_0x3abcc2)};return _0x5dab4b(_0x2260bd[_0xe2cb22(0x240)]),_0x2260bd;};var _0x17b94f=class{['cameraState'];[_0x59dd37(0x394)];[_0x59dd37(0x2ea)];[_0x59dd37(0x13f)];[_0x59dd37(0x2f3)];[_0x59dd37(0x3b6)];[_0x59dd37(0x168)];[_0x59dd37(0x19f)];[_0x59dd37(0x403)];constructor(_0x4bf224={}){const _0x5f22e5=_0x59dd37;if(this[_0x5f22e5(0x2a9)]=_0x40573c(_0x4bf224),this[_0x5f22e5(0x394)]=_0x4bf224['aspect']??0x1,this['rotateSpeed']=_0x4bf224[_0x5f22e5(0x2ea)]??0.005,this[_0x5f22e5(0x13f)]=_0x4bf224[_0x5f22e5(0x13f)]??0x1,this[_0x5f22e5(0x2f3)]=_0x4bf224['zoomSpeed']??0.0015,this['minimumDistance']=_0x4bf224[_0x5f22e5(0x3b6)]??0.001,this['maximumDistance']=_0x4bf224['maximumDistance']??0x1/0x0,this[_0x5f22e5(0x19f)]=(_0x4bf224[_0x5f22e5(0x26b)]??-0x59)*_0x990b99,this[_0x5f22e5(0x403)]=(_0x4bf224[_0x5f22e5(0x216)]??0x59)*_0x990b99,!(this[_0x5f22e5(0x394)]>0x0))throw Error(_0x5f22e5(0x179));}get['state'](){const _0x481054=_0x59dd37;return _0x10f260(this[_0x481054(0x2a9)]);}get[_0x59dd37(0x298)](){const _0x8d1827=_0x59dd37;let _0xc56bd6=_0x3cb030(this['cameraState']['position'],this[_0x8d1827(0x2a9)]['target'],this['cameraState']['up']),_0x42da4a=this[_0x8d1827(0x1ab)](),_0x597d6b=_0x2b96ab(_0x42da4a,_0xc56bd6);return{'view':_0xc56bd6,'projection':_0x42da4a,'viewProjection':_0x597d6b,'inverseViewProjection':_0x17a1a7(_0x597d6b)};}[_0x59dd37(0x21f)](_0x456672){const _0x42c4e8=_0x59dd37;_0x5dab4b(_0x456672['projection']),this[_0x42c4e8(0x2a9)]=_0x10f260(_0x456672);}[_0x59dd37(0x12f)](_0x1528fb){const _0x213051=_0x59dd37;if(!(_0x1528fb>0x0)||!Number[_0x213051(0x42c)](_0x1528fb))throw Error(_0x213051(0x34f));this[_0x213051(0x394)]=_0x1528fb;}[_0x59dd37(0x3b0)](_0xc698e2){const _0x154b76=_0x59dd37;if(_0xc698e2===this[_0x154b76(0x2a9)]['projection']['type'])return;let _0x38d88b=Math[_0x154b76(0x3f0)](..._0x1f74bc(this[_0x154b76(0x2a9)][_0x154b76(0x448)],this[_0x154b76(0x2a9)][_0x154b76(0x26c)]));if(_0xc698e2===_0x154b76(0x3bc)){let _0x28ea36=this[_0x154b76(0x2a9)][_0x154b76(0x240)],_0x527af8=_0x28ea36['type']===_0x154b76(0x41a)?_0x28ea36[_0x154b76(0x337)]*_0x990b99:0x2d*_0x990b99;this[_0x154b76(0x2a9)][_0x154b76(0x240)]={'type':_0xc698e2,'height':0x2*_0x38d88b*Math['tan'](_0x527af8/0x2),'near':_0x28ea36['near'],'far':_0x28ea36['far']};return;}let _0x400324=this[_0x154b76(0x2a9)][_0x154b76(0x240)],_0x312ef4=_0x400324[_0x154b76(0x2a2)]===_0x154b76(0x3bc)?_0x400324['height']/(0x2*Math[_0x154b76(0x3ef)](0x2d*_0x990b99/0x2)):_0x38d88b,_0x2c693c=_0x2d1d5e(_0x1f74bc(this['cameraState']['position'],this[_0x154b76(0x2a9)][_0x154b76(0x26c)]));this[_0x154b76(0x2a9)][_0x154b76(0x448)]=_0xd89588(this[_0x154b76(0x2a9)][_0x154b76(0x26c)],_0x3759f4(_0x2c693c,_0x312ef4)),this[_0x154b76(0x2a9)][_0x154b76(0x240)]={'type':_0xc698e2,'fovYDegrees':0x2d,'near':_0x400324['near'],'far':_0x400324[_0x154b76(0x35e)]};}[_0x59dd37(0x346)](_0x4d0afc,_0x2d1f96){const _0x5eb603=_0x59dd37;let _0x44bac4=_0x1f74bc(this['cameraState'][_0x5eb603(0x448)],this[_0x5eb603(0x2a9)][_0x5eb603(0x26c)]),_0x229968=Math['hypot'](..._0x44bac4);if(_0x229968===0x0)return;let _0x5d91be=Math[_0x5eb603(0x2a7)](_0x44bac4[0x0],_0x44bac4[0x2])-_0x4d0afc*this[_0x5eb603(0x2ea)],_0x4c1e06=_0x581aa1(Math[_0x5eb603(0x1e6)](_0x44bac4[0x1]/_0x229968)+_0x2d1f96*this['rotateSpeed'],this[_0x5eb603(0x19f)],this['maximumPitch']),_0x24199a=Math['cos'](_0x4c1e06)*_0x229968;this[_0x5eb603(0x2a9)][_0x5eb603(0x448)]=_0xd89588(this[_0x5eb603(0x2a9)][_0x5eb603(0x26c)],[Math['sin'](_0x5d91be)*_0x24199a,Math[_0x5eb603(0x1f6)](_0x4c1e06)*_0x229968,Math[_0x5eb603(0x180)](_0x5d91be)*_0x24199a]);}[_0x59dd37(0x2da)](_0x125c5b,_0xf19dba,_0x559a36){const _0x2df1b9=_0x59dd37;if(!(_0x559a36>0x0))return;let _0x4e091a=_0x2d1d5e(_0x1f74bc(this[_0x2df1b9(0x2a9)][_0x2df1b9(0x26c)],this[_0x2df1b9(0x2a9)]['position'])),_0x1430f2=_0x2d1d5e(_0x235060(_0x4e091a,this['cameraState']['up'])),_0xba6e55=_0x2d1d5e(_0x235060(_0x1430f2,_0x4e091a)),_0x3e602d=Math[_0x2df1b9(0x3f0)](..._0x1f74bc(this['cameraState']['position'],this[_0x2df1b9(0x2a9)][_0x2df1b9(0x26c)])),_0x196b28=(this[_0x2df1b9(0x2a9)][_0x2df1b9(0x240)][_0x2df1b9(0x2a2)]===_0x2df1b9(0x3bc)?this[_0x2df1b9(0x2a9)]['projection']['height']:0x2*_0x3e602d*Math[_0x2df1b9(0x3ef)](this[_0x2df1b9(0x2a9)][_0x2df1b9(0x240)][_0x2df1b9(0x337)]*_0x990b99/0x2))/_0x559a36*this[_0x2df1b9(0x13f)],_0x498d8a=_0xd89588(_0x3759f4(_0x1430f2,-_0x125c5b*_0x196b28),_0x3759f4(_0xba6e55,_0xf19dba*_0x196b28));this[_0x2df1b9(0x2a9)][_0x2df1b9(0x448)]=_0xd89588(this[_0x2df1b9(0x2a9)][_0x2df1b9(0x448)],_0x498d8a),this[_0x2df1b9(0x2a9)]['target']=_0xd89588(this['cameraState'][_0x2df1b9(0x26c)],_0x498d8a);}[_0x59dd37(0x1fe)](_0x47e95d){const _0x2bfbb7=_0x59dd37;let _0x5a4e40=Math[_0x2bfbb7(0x344)](_0x47e95d*this[_0x2bfbb7(0x2f3)]);if(this[_0x2bfbb7(0x2a9)][_0x2bfbb7(0x240)][_0x2bfbb7(0x2a2)]===_0x2bfbb7(0x3bc)){this['cameraState'][_0x2bfbb7(0x240)]={...this['cameraState'][_0x2bfbb7(0x240)],'height':Math[_0x2bfbb7(0x447)](this[_0x2bfbb7(0x3b6)],this[_0x2bfbb7(0x2a9)]['projection'][_0x2bfbb7(0x267)]*_0x5a4e40)};return;}let _0x283658=_0x1f74bc(this[_0x2bfbb7(0x2a9)][_0x2bfbb7(0x448)],this[_0x2bfbb7(0x2a9)][_0x2bfbb7(0x26c)]),_0x1d9f4=_0x581aa1(Math[_0x2bfbb7(0x3f0)](..._0x283658)*_0x5a4e40,this[_0x2bfbb7(0x3b6)],this[_0x2bfbb7(0x168)]);this[_0x2bfbb7(0x2a9)]['position']=_0xd89588(this[_0x2bfbb7(0x2a9)]['target'],_0x3759f4(_0x2d1d5e(_0x283658),_0x1d9f4));}[_0x59dd37(0x1ab)](){const _0x56aa5e=_0x59dd37;let _0x5ba37a=this[_0x56aa5e(0x2a9)]['projection'];return _0x5ba37a['type']==='perspective'?_0x38630c(_0x5ba37a[_0x56aa5e(0x337)]*_0x990b99,this[_0x56aa5e(0x394)],_0x5ba37a[_0x56aa5e(0x3ad)],_0x5ba37a['far']):_0x325296(_0x5ba37a[_0x56aa5e(0x267)],this[_0x56aa5e(0x394)],_0x5ba37a[_0x56aa5e(0x3ad)],_0x5ba37a[_0x56aa5e(0x35e)]);}};let _0x206837=0x615299,_0x16bb8c=_0x206837*(0x1-0x1/298.257223563),_0x23a7b1=0x1-_0x16bb8c**0x2/_0x206837**0x2,_0x54da2e=_0x568c86=>_0x568c86*Math['PI']/0xb4,_0x1555f5=(_0xa4aa3c,_0x3c80d7,_0x567e2b)=>{const _0x1dd95b=_0x59dd37;let _0x26352e=Math['sin'](_0x3c80d7),_0x54dcbe=Math[_0x1dd95b(0x180)](_0x3c80d7),_0x3c206c=Math[_0x1dd95b(0x1f6)](_0xa4aa3c),_0x2c8afd=Math['cos'](_0xa4aa3c),_0x5c499e=_0x206837/Math['sqrt'](0x1-_0x23a7b1*_0x26352e*_0x26352e);return[(_0x5c499e+_0x567e2b)*_0x54dcbe*_0x2c8afd,(_0x5c499e+_0x567e2b)*_0x54dcbe*_0x3c206c,(_0x5c499e*(0x1-_0x23a7b1)+_0x567e2b)*_0x26352e];},_0xeb78c1=(_0xeefe9f,_0x3743a7,_0x145ba6)=>{const _0x150d56=_0x59dd37;if(!Number['isFinite'](_0xeefe9f)||!Number['isFinite'](_0x3743a7)||_0xeefe9f===_0x3743a7)throw Error(_0x145ba6+'\x20axis\x20must\x20contain\x20two\x20different\x20finite\x20endpoints.\x20'+_0x145ba6+_0x150d56(0x2ce));},_0x4aed0e=(_0x32a09c,_0x3b13b3=0x1)=>{const _0x38b874=_0x59dd37;let _0x191769=_0x54da2e(_0x32a09c[_0x38b874(0x280)][_0x38b874(0x1cf)]),_0x3227a8=_0x54da2e(_0x32a09c[_0x38b874(0x280)][_0x38b874(0x326)]),_0x198c5d=_0x54da2e(_0x32a09c['zAxis']['start']),_0x462b40=_0x54da2e(_0x32a09c[_0x38b874(0x3ba)][_0x38b874(0x326)]);_0xeb78c1(_0x191769,_0x3227a8,'Longitude\x20/\x20经度'),_0xeb78c1(_0x198c5d,_0x462b40,'Latitude\x20/\x20纬度');let _0x7e5f8a=_0x32a09c[_0x38b874(0x295)][_0x38b874(0x1cf)],_0x39e5b8=_0x32a09c['yAxis'][_0x38b874(0x326)];if(_0xeb78c1(_0x7e5f8a,_0x39e5b8,_0x38b874(0x3f5)),!(_0x3b13b3>0x0)||!Number[_0x38b874(0x42c)](_0x3b13b3))throw Error('verticalScale\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20verticalScale\x20必须是大于\x200\x20的有限数。');let _0x388ab1=_0x7e5f8a+(_0x39e5b8-_0x7e5f8a)*_0x3b13b3,_0x5b739e=(_0x191769+_0x3227a8)/0x2,_0x13a5a8=(_0x198c5d+_0x462b40)/0x2,_0xbe3760=_0x1555f5(_0x5b739e,_0x13a5a8,0x0),_0x4be2d8=Math[_0x38b874(0x18b)](_0x3227a8-_0x191769)*_0x206837*Math['max'](0.01,Math['cos'](_0x13a5a8)),_0x14ab94=Math['abs'](_0x462b40-_0x198c5d)*_0x206837,_0x3ea093=Math['max'](_0x4be2d8,_0x14ab94);if(!(_0x3ea093>0x0)||!Number[_0x38b874(0x42c)](_0x3ea093))throw Error(_0x38b874(0x3a2));let _0x78f3de=[0x1/0x0,0x1/0x0,0x1/0x0],_0x2522c2=[-0x1/0x0,-0x1/0x0,-0x1/0x0];for(let _0x593f74=0x0;_0x593f74<=0x8;_0x593f74+=0x1){let _0x50f1f6=_0x198c5d+(_0x462b40-_0x198c5d)*_0x593f74/0x8;for(let _0x9b2c0b=0x0;_0x9b2c0b<=0x8;_0x9b2c0b+=0x1){let _0xb0930=_0x191769+(_0x3227a8-_0x191769)*_0x9b2c0b/0x8;for(let _0x297595 of[_0x7e5f8a,_0x388ab1]){let _0x3ba257=_0x1555f5(_0xb0930,_0x50f1f6,_0x297595);for(let _0x320974=0x0;_0x320974<0x3;_0x320974+=0x1){let _0x419003=(_0x3ba257[_0x320974]-_0xbe3760[_0x320974])/_0x3ea093;_0x78f3de[_0x320974]=Math[_0x38b874(0x37d)](_0x78f3de[_0x320974],_0x419003),_0x2522c2[_0x320974]=Math[_0x38b874(0x447)](_0x2522c2[_0x320974],_0x419003);}}}}let _0x7f40f2=_0x2522c2[_0x38b874(0x139)]((_0x205cf5,_0x3d85fd)=>_0x205cf5-_0x78f3de[_0x3d85fd]);if(_0x7f40f2[_0x38b874(0x384)](_0x1f8a3d=>!(_0x1f8a3d>0x0)||!Number[_0x38b874(0x42c)](_0x1f8a3d)))throw Error(_0x38b874(0x31c));return{'centerEcef':_0xbe3760,'normalizationMeters':_0x3ea093,'proxyModelMatrix':[_0x7f40f2[0x0],0x0,0x0,0x0,0x0,_0x7f40f2[0x1],0x0,0x0,0x0,0x0,_0x7f40f2[0x2],0x0,_0x78f3de[0x0],_0x78f3de[0x1],_0x78f3de[0x2],0x1],'transform':{'mode':_0x38b874(0x39c),'centerEcefScaled':[_0xbe3760[0x0]/_0x3ea093,_0xbe3760[0x1]/_0x3ea093,_0xbe3760[0x2]/_0x3ea093],'semiMajorAxisScaled':_0x206837/_0x3ea093,'semiMinorAxisScaled':_0x16bb8c/_0x3ea093,'longitudeRadians':[_0x191769,_0x3227a8],'latitudeRadians':[_0x198c5d,_0x462b40],'heightScaled':[_0x7e5f8a/_0x3ea093,_0x388ab1/_0x3ea093]}};},_0x50b2fb=(_0x2bef9c,_0x20bc35)=>[(_0x2bef9c[0x0]-_0x20bc35[_0x59dd37(0x2c1)][0x0])/_0x20bc35[_0x59dd37(0x29d)],(_0x2bef9c[0x1]-_0x20bc35[_0x59dd37(0x2c1)][0x1])/_0x20bc35[_0x59dd37(0x29d)],(_0x2bef9c[0x2]-_0x20bc35[_0x59dd37(0x2c1)][0x2])/_0x20bc35[_0x59dd37(0x29d)]],_0x3cf7a5=(_0x1e4944,_0x1aa878)=>Number[_0x59dd37(0x3e2)](_0x1e4944)||_0x1aa878!==void 0x0&&_0x1e4944===_0x1aa878,_0x958608=(_0x30c302,_0x2b713b)=>_0x30c302[_0x59dd37(0x1cf)]===_0x30c302[_0x59dd37(0x326)]?0x0:(_0x2b713b-_0x30c302[_0x59dd37(0x1cf)])/(_0x30c302['end']-_0x30c302[_0x59dd37(0x1cf)]),_0x2f8b04=_0x286d01=>{const _0x5365a3=_0x59dd37;if(!_0x286d01['id'])throw Error(_0x5365a3(0x252));if(_0x286d01[_0x5365a3(0x418)][_0x5365a3(0x2ec)]<0x4||_0x286d01[_0x5365a3(0x418)][_0x5365a3(0x2ec)]%0x2!=0x0)throw Error(_0x5365a3(0x249)+_0x286d01['id']+_0x5365a3(0x147));if(_0x286d01['heights'][_0x5365a3(0x2ec)]<0x2)throw Error(_0x5365a3(0x249)+_0x286d01['id']+_0x5365a3(0x3e1));let _0x473480=_0x286d01[_0x5365a3(0x418)]['length']/0x2;if(_0x286d01[_0x5365a3(0x2d2)][_0x5365a3(0x2ec)]!==_0x473480*_0x286d01[_0x5365a3(0x43a)][_0x5365a3(0x2ec)])throw Error(_0x5365a3(0x249)+_0x286d01['id']+_0x5365a3(0x2b9));if(_0x286d01[_0x5365a3(0x405)]!==void 0x0&&(!(_0x286d01[_0x5365a3(0x405)]>=0x0&&_0x286d01[_0x5365a3(0x405)]<=0x1)||!Number['isFinite'](_0x286d01[_0x5365a3(0x405)])))throw Error(_0x5365a3(0x249)+_0x286d01['id']+_0x5365a3(0x24f));for(let _0x278b59 of _0x286d01[_0x5365a3(0x418)])if(!Number[_0x5365a3(0x42c)](_0x278b59))throw Error(_0x5365a3(0x249)+_0x286d01['id']+_0x5365a3(0x40e));for(let _0x4ca55e of _0x286d01['heights'])if(!Number['isFinite'](_0x4ca55e))throw Error('路线剖面\x20'+_0x286d01['id']+_0x5365a3(0x1d5));return _0x473480;},_0x2bcf92=(_0x1b6b0a,_0x1d14dd,_0x1182f2)=>{const _0x52972e=_0x59dd37;let _0x19cad8=new Float32Array(_0x1d14dd*_0x1b6b0a[_0x52972e(0x43a)][_0x52972e(0x2ec)]*0x3);for(let _0x1273fb=0x0;_0x1273fb<_0x1b6b0a[_0x52972e(0x43a)][_0x52972e(0x2ec)];_0x1273fb+=0x1)for(let _0x32ae55=0x0;_0x32ae55<_0x1d14dd;_0x32ae55+=0x1){let _0x49fc62=(_0x1273fb*_0x1d14dd+_0x32ae55)*0x3;_0x19cad8[_0x49fc62]=_0x958608(_0x1182f2[_0x52972e(0x280)],_0x1b6b0a['path'][_0x32ae55*0x2]),_0x19cad8[_0x49fc62+0x1]=_0x958608(_0x1182f2[_0x52972e(0x295)],_0x1b6b0a[_0x52972e(0x43a)][_0x1273fb]),_0x19cad8[_0x49fc62+0x2]=_0x958608(_0x1182f2[_0x52972e(0x3ba)],_0x1b6b0a['path'][_0x32ae55*0x2+0x1]);}return _0x19cad8;},_0x2ef9a6=_0x4e458e=>{const _0x507ec3=_0x59dd37;let _0x332521=new Float32Array(_0x4e458e[_0x507ec3(0x2d2)][_0x507ec3(0x2ec)]);for(let _0x100e22=0x0;_0x100e22<_0x4e458e['values']['length'];_0x100e22+=0x1){let _0x4f5572=_0x4e458e[_0x507ec3(0x2d2)][_0x100e22];_0x332521[_0x100e22]=_0x3cf7a5(_0x4f5572,_0x4e458e[_0x507ec3(0x2e1)])?NaN:_0x4f5572;}return _0x332521;},_0x5ceeab=(_0x4a4915,_0x4c78fc)=>{let _0x53f48c=new Uint32Array((_0x4a4915-0x1)*(_0x4c78fc-0x1)*0x6),_0x166a54=0x0;for(let _0x215794=0x0;_0x215794<_0x4c78fc-0x1;_0x215794+=0x1)for(let _0x3e96cc=0x0;_0x3e96cc<_0x4a4915-0x1;_0x3e96cc+=0x1){let _0x43eddd=_0x215794*_0x4a4915+_0x3e96cc,_0x160b88=_0x43eddd+0x1,_0x30d273=_0x43eddd+_0x4a4915,_0x268c7f=_0x30d273+0x1;_0x53f48c[_0x166a54]=_0x43eddd,_0x53f48c[_0x166a54+0x1]=_0x160b88,_0x53f48c[_0x166a54+0x2]=_0x30d273,_0x53f48c[_0x166a54+0x3]=_0x30d273,_0x53f48c[_0x166a54+0x4]=_0x160b88,_0x53f48c[_0x166a54+0x5]=_0x268c7f,_0x166a54+=0x6;}return _0x53f48c;},_0x1ef2dc=(_0x5cbb9e,_0x57f4b9)=>{const _0x4b2cac=_0x59dd37;let _0x56ceab=_0x2f8b04(_0x5cbb9e);return{'id':_0x5cbb9e['id'],'positions':_0x2bcf92(_0x5cbb9e,_0x56ceab,_0x57f4b9),'values':_0x2ef9a6(_0x5cbb9e),'indices':_0x5ceeab(_0x56ceab,_0x5cbb9e[_0x4b2cac(0x43a)][_0x4b2cac(0x2ec)]),'opacity':_0x5cbb9e['opacity']??0x1,'depthMode':_0x5cbb9e[_0x4b2cac(0x251)]??_0x4b2cac(0x2cf),'revision':_0x5cbb9e[_0x4b2cac(0x133)]};};var _0x4b21de=_0x59dd37(0x1e2),_0x39942e=_0x59dd37(0x3b9),_0x284b17=_0x59dd37(0x262);let _0x3ab66c=_0x50c940=>{const _0xe3862b=_0x59dd37;if([_0x50c940[_0xe3862b(0x280)][_0xe3862b(0x399)],_0x50c940[_0xe3862b(0x295)][_0xe3862b(0x399)],_0x50c940['zAxis'][_0xe3862b(0x399)],_0x50c940[_0xe3862b(0x25d)],_0x50c940[_0xe3862b(0x3ff)],_0x50c940[_0xe3862b(0x28d)]]['some'](_0xadd320=>!Number[_0xe3862b(0x333)](_0xadd320)||_0xadd320<=0x0))throw Error(_0xe3862b(0x1ba));if(_0x50c940[_0xe3862b(0x3e8)]!==0x1)throw Error('WebGPU\x20volume\x20bricks\x20require\x20halo\x201.\x20WebGPU\x20体积砖块要求\x20halo\x20为\x201。');},_0x9f59ea=_0x4e9eb1=>[Math[_0x59dd37(0x172)](_0x4e9eb1['xAxis'][_0x59dd37(0x399)]/_0x4e9eb1[_0x59dd37(0x25d)]),Math['ceil'](_0x4e9eb1['yAxis']['count']/_0x4e9eb1['brickHeight']),Math[_0x59dd37(0x172)](_0x4e9eb1['zAxis'][_0x59dd37(0x399)]/_0x4e9eb1[_0x59dd37(0x28d)])],_0x27f52b=(_0x71fbfa,_0x5e2e8f)=>{const _0x248821=_0x59dd37;let _0x45743d=_0x5e2e8f[0x0]*_0x5e2e8f[0x1],_0x3e5f04=Math[_0x248821(0x330)](_0x71fbfa/_0x45743d),_0x5ca021=_0x71fbfa-_0x3e5f04*_0x45743d,_0x27ad85=Math['floor'](_0x5ca021/_0x5e2e8f[0x0]);return[_0x5ca021-_0x27ad85*_0x5e2e8f[0x0],_0x27ad85,_0x3e5f04];},_0x296624=(_0x30ca40,_0x19083e,_0x204459)=>{const _0x57c62b=_0x59dd37;let _0xa3659e=_0x19083e[_0x57c62b(0x25d)]+0x2,_0x5bb916=_0x19083e[_0x57c62b(0x3ff)]+0x2,_0x1d92e3=_0x27f52b(_0x30ca40[_0x57c62b(0x166)],_0x204459),_0x42e1ac=Math[_0x57c62b(0x37d)](_0x19083e[_0x57c62b(0x25d)],_0x19083e[_0x57c62b(0x280)][_0x57c62b(0x399)]-_0x1d92e3[0x0]*_0x19083e[_0x57c62b(0x25d)]),_0xc58b59=Math[_0x57c62b(0x37d)](_0x19083e[_0x57c62b(0x3ff)],_0x19083e['yAxis']['count']-_0x1d92e3[0x1]*_0x19083e[_0x57c62b(0x3ff)]),_0x3da82c=Math[_0x57c62b(0x37d)](_0x19083e['brickDepth'],_0x19083e[_0x57c62b(0x3ba)][_0x57c62b(0x399)]-_0x1d92e3[0x2]*_0x19083e[_0x57c62b(0x28d)]);for(let _0x1d4f83=0x0;_0x1d4f83<_0x3da82c;_0x1d4f83+=0x1)for(let _0x4892bc=0x0;_0x4892bc<_0xc58b59;_0x4892bc+=0x1){let _0x3ae2bc=((_0x1d4f83+0x1)*_0x5bb916+_0x4892bc+0x1)*_0xa3659e+0x1;for(let _0x11f84d=0x0;_0x11f84d<_0x42e1ac;_0x11f84d+=0x1){let _0x572e43=_0x30ca40[_0x57c62b(0x2d2)][_0x3ae2bc+_0x11f84d];if(_0x572e43===_0x572e43&&(_0x19083e[_0x57c62b(0x2e1)]===void 0x0||_0x572e43!==_0x19083e[_0x57c62b(0x2e1)]))return{'occupied':!0x0,'coreSampleCount':_0x42e1ac*_0xc58b59*_0x3da82c};}}return{'occupied':!0x1,'coreSampleCount':_0x42e1ac*_0xc58b59*_0x3da82c};},_0x58e6e8=(_0x5d5e07,_0x5d3e1e,_0x12ae52,_0x3bb8b0,_0xdf1b63)=>{const _0x17c542=_0x59dd37;if(_0x5d5e07<=0x0)return null;let _0x42f5ba=Math[_0x17c542(0x330)](_0xdf1b63/_0x5d3e1e),_0x3df7f9=Math[_0x17c542(0x330)](_0xdf1b63/_0x12ae52),_0x39337a=Math[_0x17c542(0x330)](_0xdf1b63/_0x3bb8b0),_0x495a4a=null;for(let _0x1012dd=0x1;_0x1012dd<=_0x42f5ba;_0x1012dd+=0x1)for(let _0x419e55=0x1;_0x419e55<=_0x3df7f9;_0x419e55+=0x1){let _0x1bc4ab=Math['min'](_0x39337a,Math[_0x17c542(0x330)](_0x5d5e07/(_0x1012dd*_0x419e55))),_0x5ba215=_0x1012dd*_0x419e55*_0x1bc4ab;_0x1bc4ab<=0x0||_0x5ba215<=(_0x495a4a?.[_0x17c542(0x1fa)]??0x0)||(_0x495a4a={'slotCountX':_0x1012dd,'slotCountY':_0x419e55,'slotCountZ':_0x1bc4ab,'slotCount':_0x5ba215,'textureCount':0x1,'capacity':_0x5ba215});}return _0x495a4a;},_0x3ca47e=(_0x38f01e,_0x144717)=>{const _0x3552db=_0x59dd37;let _0x175985=_0x144717[_0x3552db(0x3cc)]*_0x144717[_0x3552db(0x243)],_0x5d79a3=Math[_0x3552db(0x330)](_0x38f01e/_0x175985),_0x3ec552=_0x38f01e-_0x5d79a3*_0x175985,_0x6b2ace=Math[_0x3552db(0x330)](_0x3ec552/_0x144717[_0x3552db(0x3cc)]);return[_0x3ec552-_0x6b2ace*_0x144717[_0x3552db(0x3cc)],_0x6b2ace,_0x5d79a3];},_0x5dd5f8=(_0x577749,_0xcb5990)=>{const _0x4267b9=_0x59dd37;let _0x40c27c=null;for(let _0xea83bb of _0x577749)_0xea83bb[_0x4267b9(0x18c)]!==_0xcb5990&&(!_0x40c27c||_0xea83bb[_0x4267b9(0x18c)]<_0x40c27c[_0x4267b9(0x18c)])&&(_0x40c27c=_0xea83bb);return _0x40c27c;},_0x44b272=(_0x6deabb,_0x344e2c,_0xa131e9,_0x4c0a87)=>{const _0x48bb33=_0x59dd37;let _0x39071c=_0x344e2c*Float32Array[_0x48bb33(0x266)],_0x5169b1=Math[_0x48bb33(0x172)](_0x39071c/0x100)*0x100;if(_0x39071c===_0x5169b1)return{'values':_0x6deabb,'bytesPerRow':_0x5169b1};let _0x5cea7b=_0x5169b1/Float32Array[_0x48bb33(0x266)],_0x450876=new Float32Array(_0x5cea7b*_0xa131e9*_0x4c0a87);for(let _0x3e6c9a=0x0;_0x3e6c9a<_0x4c0a87;_0x3e6c9a+=0x1)for(let _0x2d57f9=0x0;_0x2d57f9<_0xa131e9;_0x2d57f9+=0x1){let _0x4f3e5e=(_0x3e6c9a*_0xa131e9+_0x2d57f9)*_0x344e2c,_0x58b3e9=(_0x3e6c9a*_0xa131e9+_0x2d57f9)*_0x5cea7b;_0x450876[_0x48bb33(0x1ca)](_0x6deabb['subarray'](_0x4f3e5e,_0x4f3e5e+_0x344e2c),_0x58b3e9);}return{'values':_0x450876,'bytesPerRow':_0x5169b1};};var _0x443a7e=class{['device'];[_0x59dd37(0x2c6)];[_0x59dd37(0x16a)];[_0x59dd37(0x2b0)]=null;['layout']=null;[_0x59dd37(0x389)]=[];[_0x59dd37(0x2ac)]=[];['pageTableBuffer']=null;[_0x59dd37(0x162)]=new Uint32Array();['residentByLogicalIndex']=new Map();[_0x59dd37(0x304)]=new Map();[_0x59dd37(0x395)]=0x0;constructor(_0x4d29bb,_0x4926c8=0x20000000,_0x3f5820=_0x4926c8){const _0x38d189=_0x59dd37;if(!Number[_0x38d189(0x42c)](_0x4926c8)||!Number[_0x38d189(0x42c)](_0x3f5820)||_0x4926c8<=0x0||_0x3f5820<=0x0)throw Error(_0x38d189(0x205));this[_0x38d189(0x42e)]=_0x4d29bb,this['memoryTargetBytes']=Math[_0x38d189(0x37d)](_0x4926c8,_0x3f5820),this['memoryHardLimitBytes']=_0x3f5820;}get[_0x59dd37(0x292)](){const _0x260c9c=_0x59dd37;if(!this[_0x260c9c(0x2b0)])throw Error(_0x260c9c(0x2a8));return this[_0x260c9c(0x2b0)];}get[_0x59dd37(0x238)](){const _0x591d25=_0x59dd37;if(!this[_0x591d25(0x208)])throw Error(_0x591d25(0x3d6));return this[_0x591d25(0x208)];}get['residentBrickCount'](){const _0x44ca43=_0x59dd37;return this[_0x44ca43(0x30f)][_0x44ca43(0x406)];}get[_0x59dd37(0x370)](){const _0x15ebf4=_0x59dd37;if(!this['metadata']||!this[_0x15ebf4(0x208)])return{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this[_0x15ebf4(0x16a)],'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0};let _0x265271=_0x9f59ea(this[_0x15ebf4(0x2b0)]),_0x32c725=_0x265271[0x0]*_0x265271[0x1]*_0x265271[0x2],_0x3d425c=this[_0x15ebf4(0x2b0)]['brickWidth']+0x2,_0x48c147=this[_0x15ebf4(0x2b0)]['brickHeight']+0x2,_0x183b4b=this[_0x15ebf4(0x2b0)][_0x15ebf4(0x28d)]+0x2,_0x29e6e5=_0x3d425c*_0x48c147*_0x183b4b*this[_0x15ebf4(0x208)][_0x15ebf4(0x2dc)]*Float32Array['BYTES_PER_ELEMENT'],_0x32ebf7=_0x32c725*0x4*Uint32Array[_0x15ebf4(0x266)],_0x11f393=0x0,_0x4081ef=0x0;for(let _0x107ffd of this[_0x15ebf4(0x30f)]['values']())_0x107ffd[_0x15ebf4(0x1b2)]||(_0x4081ef+=0x1,_0x11f393+=_0x107ffd[_0x15ebf4(0x31f)]);return{'logicalBrickCount':_0x32c725,'atlasCapacity':this[_0x15ebf4(0x208)][_0x15ebf4(0x2dc)],'gpuBytes':_0x29e6e5+_0x32ebf7,'memoryLimitBytes':this[_0x15ebf4(0x16a)],'budgetLimited':this[_0x15ebf4(0x208)][_0x15ebf4(0x2dc)]<_0x32c725,'skippedSamples':_0x11f393,'skippedCells':_0x4081ef};}[_0x59dd37(0x312)](_0x74f7d6){const _0xc7a6a3=_0x59dd37;_0x3ab66c(_0x74f7d6);let _0x336064=_0x74f7d6[_0xc7a6a3(0x25d)]+0x2,_0x1a51b2=_0x74f7d6[_0xc7a6a3(0x3ff)]+0x2,_0x339caf=_0x74f7d6[_0xc7a6a3(0x28d)]+0x2,_0x450766=_0x9f59ea(_0x74f7d6),_0x3cd694=_0x450766[0x0]*_0x450766[0x1]*_0x450766[0x2],_0x2c4c10=_0x3cd694*0x4*Uint32Array[_0xc7a6a3(0x266)],_0x4ff0e9=Math[_0xc7a6a3(0x37d)](this['memoryTargetBytes'],this['memoryHardLimitBytes'])-_0x2c4c10;if(_0x4ff0e9<=0x0)throw Error(_0xc7a6a3(0x17a));let _0x20d75a=_0x336064*_0x1a51b2*_0x339caf*Float32Array[_0xc7a6a3(0x266)],_0x35c73d=Math[_0xc7a6a3(0x37d)](_0x3cd694,Math[_0xc7a6a3(0x330)](_0x4ff0e9/_0x20d75a)),_0x224516=Math['max'](0x1,Math['floor'](0x4000000/_0x20d75a)),_0x25cdea=Math['min'](0x8,Math[_0xc7a6a3(0x447)](0x1,Math[_0xc7a6a3(0x172)](_0x35c73d/_0x224516))),_0x312d86=_0x58e6e8(Math[_0xc7a6a3(0x447)](0x1,Math[_0xc7a6a3(0x330)](_0x35c73d/_0x25cdea)),_0x336064,_0x1a51b2,_0x339caf,this[_0xc7a6a3(0x42e)]['limits'][_0xc7a6a3(0x1c8)]);if(!_0x312d86)throw Error(_0xc7a6a3(0x1f5));let _0xc689a8={..._0x312d86,'textureCount':_0x25cdea,'capacity':_0x312d86['slotCount']*_0x25cdea},_0x40e664=_0x336064*_0xc689a8[_0xc7a6a3(0x3cc)],_0x28c042=_0x1a51b2*_0xc689a8[_0xc7a6a3(0x243)],_0x21ab06=_0x339caf*_0xc689a8[_0xc7a6a3(0x20a)],_0x5c6188=Array[_0xc7a6a3(0x130)]({'length':_0x25cdea},(_0x36f24d,_0xed1635)=>this['device'][_0xc7a6a3(0x2de)]({'label':_0xc7a6a3(0x148)+_0xed1635,'size':[_0x40e664,_0x28c042,_0x21ab06],'dimension':'3d','format':_0xc7a6a3(0x3a4),'usage':GPUTextureUsage[_0xc7a6a3(0x3fa)]|GPUTextureUsage[_0xc7a6a3(0x44a)]|GPUTextureUsage[_0xc7a6a3(0x26a)]})),_0x3efc06=this[_0xc7a6a3(0x42e)][_0xc7a6a3(0x300)]({'label':_0xc7a6a3(0x135),'size':Math[_0xc7a6a3(0x447)](0x10,_0x2c4c10),'usage':GPUBufferUsage['STORAGE']|GPUBufferUsage[_0xc7a6a3(0x44a)]});this[_0xc7a6a3(0x37a)](),this[_0xc7a6a3(0x2b0)]={..._0x74f7d6},this[_0xc7a6a3(0x208)]=_0xc689a8,this[_0xc7a6a3(0x389)]=_0x5c6188,this[_0xc7a6a3(0x2ac)]=_0x5c6188[_0xc7a6a3(0x139)](_0x297ee7=>_0x297ee7[_0xc7a6a3(0x363)]({'dimension':'3d'})),this['pageTableBuffer']=_0x3efc06,this[_0xc7a6a3(0x162)]=new Uint32Array(_0x3cd694*0x4),this[_0xc7a6a3(0x42e)][_0xc7a6a3(0x13a)][_0xc7a6a3(0x258)](_0x3efc06,0x0,this[_0xc7a6a3(0x162)]);for(let _0x363bbe of _0x5c6188)this['clearAtlasTexture'](_0x363bbe,_0x40e664,_0x28c042,_0x21ab06);this['generation']+=0x1;}[_0x59dd37(0x33e)](_0x486839,_0xc79a01){const _0x303d37=_0x59dd37;let _0x1b70de=this[_0x303d37(0x292)],_0x5e7187=this[_0x303d37(0x238)],_0x546ec4=_0x9f59ea(_0x1b70de),_0x482f5a=_0x546ec4[0x0]*_0x546ec4[0x1]*_0x546ec4[0x2];if(!Number[_0x303d37(0x333)](_0x486839[_0x303d37(0x166)])||_0x486839[_0x303d37(0x166)]<0x0||_0x486839[_0x303d37(0x166)]>=_0x482f5a)throw Error('Invalid\x20logical\x20volume\x20brick\x20index:\x20'+_0x486839[_0x303d37(0x166)]+_0x303d37(0x334));let _0x3cadfc=_0x1b70de[_0x303d37(0x25d)]+0x2,_0x1741f8=_0x1b70de[_0x303d37(0x3ff)]+0x2,_0x552467=_0x1b70de[_0x303d37(0x28d)]+0x2,_0x5e97a4=_0x3cadfc*_0x1741f8*_0x552467;if(_0x486839[_0x303d37(0x2d2)][_0x303d37(0x2ec)]!==_0x5e97a4)throw Error('Volume\x20brick\x20'+_0x486839[_0x303d37(0x166)]+_0x303d37(0x32d)+_0x5e97a4+_0x303d37(0x260)+_0x486839[_0x303d37(0x2d2)]['length']+'.\x20体积砖块数据长度不正确。');let _0x4a72ce=this[_0x303d37(0x30f)][_0x303d37(0x1a0)](_0x486839[_0x303d37(0x166)])??this[_0x303d37(0x14a)](_0x486839[_0x303d37(0x166)],_0xc79a01),_0x268911=_0x296624(_0x486839,_0x1b70de,_0x546ec4),_0x527d49=Math[_0x303d37(0x330)](_0x4a72ce[_0x303d37(0x15e)]/_0x5e7187['slotCount']),_0x36e0ef=_0x3ca47e(_0x4a72ce[_0x303d37(0x15e)]%_0x5e7187[_0x303d37(0x1fa)],_0x5e7187),_0x68e714=_0x44b272(new Float32Array(_0x486839['values']),_0x3cadfc,_0x1741f8,_0x552467);return _0x4a72ce[_0x303d37(0x18c)]=_0xc79a01,_0x4a72ce[_0x303d37(0x395)]=this[_0x303d37(0x395)],_0x4a72ce[_0x303d37(0x1b2)]=_0x268911[_0x303d37(0x1b2)],_0x4a72ce['skippedSampleCount']=_0x268911[_0x303d37(0x195)],this[_0x303d37(0x1be)](_0x4a72ce),{'values':_0x68e714[_0x303d37(0x2d2)],'bytesPerRow':_0x68e714[_0x303d37(0x36d)],'rowsPerImage':_0x1741f8,'origin':{'x':_0x36e0ef[0x0]*_0x3cadfc,'y':_0x36e0ef[0x1]*_0x1741f8,'z':_0x36e0ef[0x2]*_0x552467},'extent':[_0x3cadfc,_0x1741f8,_0x552467],'atlasIndex':_0x527d49};}[_0x59dd37(0x3a7)](_0x37ff49,_0x181ed4,_0x2ac02f,_0x2552da){const _0xea55c4=_0x59dd37;_0x37ff49[_0xea55c4(0x38d)]({'buffer':_0x181ed4,'offset':_0x2ac02f,'bytesPerRow':_0x2552da[_0xea55c4(0x36d)],'rowsPerImage':_0x2552da[_0xea55c4(0x231)]},{'texture':this['getAtlasTexture'](_0x2552da['atlasIndex']),'origin':_0x2552da[_0xea55c4(0x275)]},_0x2552da[_0xea55c4(0x157)]);}[_0x59dd37(0x362)](_0x254c17,_0x39ea46){const _0xb8d52a=_0x59dd37;for(let _0x4bfddf of _0x254c17){let _0x5a7d20=this['residentByLogicalIndex'][_0xb8d52a(0x1a0)](_0x4bfddf);_0x5a7d20&&(_0x5a7d20['lastUsedFrame']=_0x39ea46);}}[_0x59dd37(0x176)](_0xf0527d,_0xd7da48){const _0x5e3e37=_0x59dd37;if(this['atlasViews'][_0x5e3e37(0x2ec)]===0x0||!this['pageTableBuffer'])throw Error(_0x5e3e37(0x36b));return this[_0x5e3e37(0x42e)][_0x5e3e37(0x176)]({'label':'volume\x20atlas\x20bind\x20group','layout':_0xf0527d,'entries':[...Array['from']({'length':0x8},(_0x4697bb,_0x35eb52)=>({'binding':_0x35eb52,'resource':this['atlasViews'][_0x35eb52]??this[_0x5e3e37(0x2ac)][0x0]})),{'binding':0x8,'resource':{'buffer':this[_0x5e3e37(0x158)]}},{'binding':0x9,'resource':{'buffer':_0xd7da48}}]});}[_0x59dd37(0x325)](){const _0x21b23d=_0x59dd37;this['destroyResources'](),this[_0x21b23d(0x2b0)]=null,this['layout']=null,this['pageTableValues']=new Uint32Array();}[_0x59dd37(0x14a)](_0xe5e544,_0x30ed3c){const _0x465d94=_0x59dd37;let _0x40af35=this[_0x465d94(0x238)],_0x565ee6=this[_0x465d94(0x304)][_0x465d94(0x406)];if(_0x565ee6>=_0x40af35[_0x465d94(0x2dc)]){let _0x123ac3=_0x5dd5f8(this['residentBySlotIndex']['values'](),_0x30ed3c);if(!_0x123ac3)throw Error(_0x465d94(0x3e9));_0x565ee6=_0x123ac3['slotIndex'],this[_0x465d94(0x459)](_0x123ac3[_0x465d94(0x166)]),this['residentByLogicalIndex'][_0x465d94(0x23d)](_0x123ac3[_0x465d94(0x166)]),this['residentBySlotIndex'][_0x465d94(0x23d)](_0x565ee6);}let _0x377d4f={'logicalIndex':_0xe5e544,'slotIndex':_0x565ee6,'lastUsedFrame':_0x30ed3c,'generation':this[_0x465d94(0x395)],'occupied':!0x1,'skippedSampleCount':0x0};return this[_0x465d94(0x30f)][_0x465d94(0x1ca)](_0xe5e544,_0x377d4f),this[_0x465d94(0x304)][_0x465d94(0x1ca)](_0x565ee6,_0x377d4f),_0x377d4f;}[_0x59dd37(0x1be)](_0x5c997f){const _0x4c85cc=_0x59dd37;let _0x9db70a=_0x5c997f['logicalIndex']*0x4;this[_0x4c85cc(0x162)][_0x9db70a]=_0x5c997f[_0x4c85cc(0x15e)]%this[_0x4c85cc(0x238)][_0x4c85cc(0x1fa)]+0x1,this[_0x4c85cc(0x162)][_0x9db70a+0x1]=_0x5c997f[_0x4c85cc(0x395)],this[_0x4c85cc(0x162)][_0x9db70a+0x2]=+!!_0x5c997f[_0x4c85cc(0x1b2)],this[_0x4c85cc(0x162)][_0x9db70a+0x3]=Math[_0x4c85cc(0x330)](_0x5c997f[_0x4c85cc(0x15e)]/this[_0x4c85cc(0x238)]['slotCount']),this[_0x4c85cc(0x42e)][_0x4c85cc(0x13a)][_0x4c85cc(0x258)](this[_0x4c85cc(0x170)](),_0x9db70a*Uint32Array[_0x4c85cc(0x266)],this[_0x4c85cc(0x162)],_0x9db70a,0x4);}[_0x59dd37(0x459)](_0x3b5f15){const _0x280230=_0x59dd37;let _0x756564=_0x3b5f15*0x4;this[_0x280230(0x162)][_0x280230(0x23e)](0x0,_0x756564,_0x756564+0x4),this['device'][_0x280230(0x13a)][_0x280230(0x258)](this[_0x280230(0x170)](),_0x756564*Uint32Array[_0x280230(0x266)],this[_0x280230(0x162)],_0x756564,0x4);}[_0x59dd37(0x30b)](_0x3061cb){const _0x4098a8=_0x59dd37;let _0x212d41=this[_0x4098a8(0x389)][_0x3061cb];if(!_0x212d41)throw Error(_0x4098a8(0x39f));return _0x212d41;}[_0x59dd37(0x245)](_0x52ea0a,_0x12b1c0,_0x4074b,_0x2c1da9){const _0x23ec83=_0x59dd37;let _0xbfbf53=this[_0x23ec83(0x42e)][_0x23ec83(0x15a)]({'label':_0x23ec83(0x1cb),'code':_0x23ec83(0x33a)}),_0x5003f8=this[_0x23ec83(0x42e)][_0x23ec83(0x21c)]({'label':'volume\x20atlas\x20clear\x20pipeline','layout':'auto','compute':{'module':_0xbfbf53,'entryPoint':_0x23ec83(0x314)}}),_0x5b81ee=this[_0x23ec83(0x42e)][_0x23ec83(0x176)]({'label':_0x23ec83(0x302),'layout':_0x5003f8[_0x23ec83(0x327)](0x0),'entries':[{'binding':0x0,'resource':_0x52ea0a['createView']({'dimension':'3d'})}]}),_0x1572fb=this[_0x23ec83(0x42e)][_0x23ec83(0x14b)]({'label':_0x23ec83(0x1ad)}),_0x4d6df8=_0x1572fb['beginComputePass']({'label':_0x23ec83(0x2b7)});_0x4d6df8[_0x23ec83(0x31d)](_0x5003f8),_0x4d6df8[_0x23ec83(0x36e)](0x0,_0x5b81ee),_0x4d6df8[_0x23ec83(0x3c4)](Math[_0x23ec83(0x172)](_0x12b1c0/0x4),Math['ceil'](_0x4074b/0x4),Math['ceil'](_0x2c1da9/0x4)),_0x4d6df8[_0x23ec83(0x326)](),this['device'][_0x23ec83(0x13a)][_0x23ec83(0x454)]([_0x1572fb[_0x23ec83(0x20c)]()]);}[_0x59dd37(0x170)](){const _0x51b67f=_0x59dd37;if(!this['pageTableBuffer'])throw Error(_0x51b67f(0x17f));return this['pageTableBuffer'];}['destroyResources'](){const _0x4e999d=_0x59dd37;for(let _0x434192 of this[_0x4e999d(0x389)])_0x434192[_0x4e999d(0x325)]();this[_0x4e999d(0x158)]?.[_0x4e999d(0x325)](),this[_0x4e999d(0x389)]=[],this[_0x4e999d(0x2ac)]=[],this[_0x4e999d(0x158)]=null,this[_0x4e999d(0x30f)][_0x4e999d(0x2e0)](),this['residentBySlotIndex'][_0x4e999d(0x2e0)]();}},_0x5e946f=class{[_0x59dd37(0x42e)];['depthTexture']=null;['depthView']=null;[_0x59dd37(0x31e)]=0x0;['height']=0x0;constructor(_0x3e8ca2){const _0x4bd587=_0x59dd37;this[_0x4bd587(0x42e)]=_0x3e8ca2;}get['sceneDepthView'](){const _0x34dd03=_0x59dd37;if(!this[_0x34dd03(0x287)])throw Error(_0x34dd03(0x3f7));return this[_0x34dd03(0x287)];}['resize'](_0x3a8fe8,_0x5136aa){const _0x49575f=_0x59dd37;if(this['width']===_0x3a8fe8&&this[_0x49575f(0x267)]===_0x5136aa)return;let _0x356fee=this['device'][_0x49575f(0x2de)]({'label':_0x49575f(0x276),'size':[_0x3a8fe8,_0x5136aa],'format':_0x49575f(0x24c),'usage':GPUTextureUsage[_0x49575f(0x351)]|GPUTextureUsage[_0x49575f(0x3fa)]}),_0x155bac=this[_0x49575f(0x22f)];this['depthTexture']=_0x356fee,this[_0x49575f(0x287)]=_0x356fee['createView'](),this['width']=_0x3a8fe8,this[_0x49575f(0x267)]=_0x5136aa,_0x155bac?.[_0x49575f(0x325)]();}[_0x59dd37(0x325)](){const _0x30fcbd=_0x59dd37;this['depthTexture']?.[_0x30fcbd(0x325)](),this[_0x30fcbd(0x22f)]=null,this[_0x30fcbd(0x287)]=null,this['width']=0x0,this[_0x30fcbd(0x267)]=0x0;}},_0xf10edd=class{['device'];[_0x59dd37(0x3d2)]=[];constructor(_0x55b2c5){const _0x563b64=_0x59dd37;this[_0x563b64(0x42e)]=_0x55b2c5;}get['count'](){const _0x690aa1=_0x59dd37;return this[_0x690aa1(0x3d2)][_0x690aa1(0x2ec)];}[_0x59dd37(0x436)](_0x28b316){const _0xc16f37=_0x59dd37;let _0x25d60e=[];try{for(let _0x488fb1 of _0x28b316)_0x25d60e[_0xc16f37(0x222)](this['createResource'](_0x488fb1));}catch(_0x975182){for(let _0xcce2b3 of _0x25d60e)_0xcce2b3['buffer'][_0xc16f37(0x325)]();throw _0x975182;}this[_0xc16f37(0x37a)](),this[_0xc16f37(0x3d2)]=_0x25d60e;}[_0x59dd37(0x397)](_0x44b8a3,_0x49f042,_0x27f68c){const _0x46c149=_0x59dd37;for(let _0x542fc9 of this[_0x46c149(0x3d2)])_0x542fc9[_0x46c149(0x453)]!==_0x49f042||_0x542fc9[_0x46c149(0x251)]!==_0x27f68c||(_0x44b8a3[_0x46c149(0x349)](0x0,_0x542fc9['buffer']),_0x44b8a3[_0x46c149(0x397)](_0x542fc9[_0x46c149(0x263)]));}['destroy'](){const _0x214e85=_0x59dd37;this[_0x214e85(0x37a)]();}[_0x59dd37(0x17d)](_0x405cd9){const _0x3d5eb2=_0x59dd37;if(_0x405cd9[_0x3d5eb2(0x25a)]['length']===0x0||_0x405cd9[_0x3d5eb2(0x25a)][_0x3d5eb2(0x2ec)]%0x7!=0x0)throw Error(_0x3d5eb2(0x319)+_0x405cd9['id']+_0x3d5eb2(0x2bf));let _0x2d09b3=new Float32Array(_0x405cd9[_0x3d5eb2(0x25a)]),_0x1809d1=this[_0x3d5eb2(0x42e)][_0x3d5eb2(0x300)]({'label':_0x3d5eb2(0x3c7)+_0x405cd9['id'],'size':_0x2d09b3[_0x3d5eb2(0x3c2)],'usage':GPUBufferUsage[_0x3d5eb2(0x1b1)]|GPUBufferUsage[_0x3d5eb2(0x44a)]});return this[_0x3d5eb2(0x42e)]['queue'][_0x3d5eb2(0x258)](_0x1809d1,0x0,_0x2d09b3),{'id':_0x405cd9['id'],'topology':_0x405cd9[_0x3d5eb2(0x453)],'depthMode':_0x405cd9[_0x3d5eb2(0x251)],'buffer':_0x1809d1,'vertexCount':_0x405cd9[_0x3d5eb2(0x25a)][_0x3d5eb2(0x2ec)]/0x7};}[_0x59dd37(0x37a)](){const _0x29fdb0=_0x59dd37;for(let _0x497d1e of this[_0x29fdb0(0x3d2)])_0x497d1e['buffer']['destroy']();this['resources']=[];}},_0x26c231=class{['device'];[_0x59dd37(0x208)];[_0x59dd37(0x3d2)]=[];['uniformUpdateCount']=0x0;[_0x59dd37(0x21d)]=0x0;constructor(_0x498d25,_0x26476b){const _0x53f2b8=_0x59dd37;this[_0x53f2b8(0x42e)]=_0x498d25,this[_0x53f2b8(0x208)]=_0x26476b;}get[_0x59dd37(0x399)](){const _0x3d2b65=_0x59dd37;return this[_0x3d2b65(0x3d2)][_0x3d2b65(0x2ec)];}get[_0x59dd37(0x370)](){const _0x9fd57b=_0x59dd37;return{'uniformUpdateCount':this['uniformUpdateCount'],'resourceRebuildCount':this[_0x9fd57b(0x21d)]};}[_0x59dd37(0x436)](_0x159cfe){const _0x2dac72=_0x59dd37;let _0x442758=new Map(this[_0x2dac72(0x3d2)]['map'](_0x2a06c3=>[_0x2a06c3['id'],_0x2a06c3])),_0x78dd43=[],_0x16ae10=new Set();try{for(let _0x5fa2b3 of _0x159cfe){if(!_0x5fa2b3[_0x2dac72(0x45c)])continue;if(_0x16ae10[_0x2dac72(0x290)](_0x5fa2b3['id']))throw Error(_0x2dac72(0x2b4)+_0x5fa2b3['id']+_0x2dac72(0x317));_0x16ae10[_0x2dac72(0x45b)](_0x5fa2b3['id']);let _0x243acd=this[_0x2dac72(0x273)](_0x5fa2b3),_0x5c4fe5=_0x442758[_0x2dac72(0x1a0)](_0x5fa2b3['id']);if(!_0x5c4fe5){_0x78dd43['push'](this['createResource'](_0x5fa2b3,_0x243acd));continue;}_0x442758['delete'](_0x5fa2b3['id']),_0x5c4fe5[_0x2dac72(0x251)]=_0x5fa2b3[_0x2dac72(0x251)],this[_0x2dac72(0x2fb)](_0x5c4fe5[_0x2dac72(0x2d2)],_0x243acd)||(this[_0x2dac72(0x42e)][_0x2dac72(0x13a)][_0x2dac72(0x258)](_0x5c4fe5[_0x2dac72(0x3e4)],0x0,_0x243acd),_0x5c4fe5['values']=_0x243acd,this[_0x2dac72(0x2f9)]+=0x1),_0x78dd43['push'](_0x5c4fe5);}}catch(_0x1126c2){for(let _0x50709e of _0x78dd43)this['resources'][_0x2dac72(0x134)](_0x50709e)||_0x50709e[_0x2dac72(0x3e4)][_0x2dac72(0x325)]();throw _0x1126c2;}for(let _0x3df6ba of _0x442758[_0x2dac72(0x2d2)]())_0x3df6ba[_0x2dac72(0x3e4)][_0x2dac72(0x325)]();this[_0x2dac72(0x3d2)]=_0x78dd43;}[_0x59dd37(0x397)](_0x5f4c04,_0x3e4137,_0x4a3b48){const _0x3ad051=_0x59dd37;_0x5f4c04['setPipeline'](_0x3e4137);for(let _0x19b951 of this[_0x3ad051(0x3d2)])_0x19b951[_0x3ad051(0x251)]===_0x4a3b48&&(_0x5f4c04[_0x3ad051(0x36e)](0x3,_0x19b951[_0x3ad051(0x3b5)]),_0x5f4c04['draw'](0x1800));}['destroy'](){const _0x4c96bd=_0x59dd37;this[_0x4c96bd(0x37a)]();}['createValues'](_0x503552){const _0x3e28c0=_0x59dd37;if(!Number[_0x3e28c0(0x42c)](_0x503552[_0x3e28c0(0x448)])||_0x503552[_0x3e28c0(0x448)]<0x0||_0x503552['position']>0x1)throw Error(_0x3e28c0(0x311)+_0x503552['id']+'\x20position\x20must\x20be\x20normalized\x20to\x20zero\x20through\x20one.\x20体积切面位置必须归一化到零至一。');let _0x5e3d49=_0x503552[_0x3e28c0(0x250)]==='x'?0x0:_0x503552[_0x3e28c0(0x250)]==='y'?0x1:0x2,_0x3d9757=_0x503552[_0x3e28c0(0x132)]??[0x0,0x0,0x0,0x0];if(_0x3d9757[_0x3e28c0(0x384)](_0x212180=>!Number[_0x3e28c0(0x42c)](_0x212180)||_0x212180<0x0||_0x212180>0x1))throw Error(_0x3e28c0(0x311)+_0x503552['id']+_0x3e28c0(0x2f2));return new Float32Array([_0x5e3d49,_0x503552['position'],_0x503552[_0x3e28c0(0x405)]??0x1,0x0,..._0x3d9757]);}[_0x59dd37(0x17d)](_0x450eb1,_0x50379a){const _0x9607be=_0x59dd37;let _0x2a097b=this[_0x9607be(0x42e)][_0x9607be(0x300)]({'label':_0x9607be(0x33b)+_0x450eb1['id'],'size':0x20,'usage':GPUBufferUsage[_0x9607be(0x12c)]|GPUBufferUsage[_0x9607be(0x44a)]});this[_0x9607be(0x42e)][_0x9607be(0x13a)][_0x9607be(0x258)](_0x2a097b,0x0,_0x50379a);let _0x561173=this[_0x9607be(0x42e)][_0x9607be(0x176)]({'layout':this[_0x9607be(0x208)],'entries':[{'binding':0x0,'resource':{'buffer':_0x2a097b}}]});return this[_0x9607be(0x21d)]+=0x1,{'id':_0x450eb1['id'],'depthMode':_0x450eb1[_0x9607be(0x251)],'buffer':_0x2a097b,'bindGroup':_0x561173,'values':_0x50379a};}[_0x59dd37(0x2fb)](_0x3928f2,_0x84e1de){const _0x3d8fd0=_0x59dd37;for(let _0x127226=0x0;_0x127226<_0x3928f2[_0x3d8fd0(0x2ec)];_0x127226+=0x1)if(_0x3928f2[_0x127226]!==_0x84e1de[_0x127226])return!0x1;return!0x0;}[_0x59dd37(0x37a)](){const _0x4d8b1f=_0x59dd37;for(let _0x3c903f of this[_0x4d8b1f(0x3d2)])_0x3c903f[_0x4d8b1f(0x3e4)][_0x4d8b1f(0x325)]();this['resources']=[];}};let _0x3258a7=(_0x35a5cc,_0x4c5e59,_0x786958)=>{const _0x3fa088=_0x59dd37;let _0xb498a8=_0x35a5cc[_0x3fa088(0x300)]({'label':_0x786958,'size':Math[_0x3fa088(0x447)](0x4,_0x4c5e59[_0x3fa088(0x3c2)]),'usage':GPUBufferUsage[_0x3fa088(0x43e)]|GPUBufferUsage[_0x3fa088(0x44a)]});return _0x4c5e59['byteLength']>0x0&&_0x35a5cc['queue'][_0x3fa088(0x258)](_0xb498a8,0x0,_0x4c5e59),_0xb498a8;},_0x197675=(_0xfc0360,_0x2d49de)=>{const _0x54cf72=_0x59dd37;if(_0xfc0360[_0x54cf72(0x2ec)]===0x0||_0x2d49de[_0x54cf72(0x2ec)]===0x0)throw Error(_0x54cf72(0x217));for(let _0x531ea4=0x1;_0x531ea4<_0xfc0360['length'];_0x531ea4+=0x1)if(_0xfc0360[_0x531ea4][_0x54cf72(0x386)]<_0xfc0360[_0x531ea4-0x1]['value'])throw Error('Volume\x20color\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积颜色色标必须按数值升序排列。');for(let _0x2b9c81=0x0;_0x2b9c81<_0x2d49de['length'];_0x2b9c81+=0x1){if(_0x2d49de[_0x2b9c81][_0x54cf72(0x405)]<0x0||_0x2d49de[_0x2b9c81][_0x54cf72(0x405)]>0x1)throw Error(_0x54cf72(0x28a));if(_0x2b9c81>0x0&&_0x2d49de[_0x2b9c81][_0x54cf72(0x386)]<_0x2d49de[_0x2b9c81-0x1]['value'])throw Error(_0x54cf72(0x21b));}};var _0x505c86=class{[_0x59dd37(0x42e)];[_0x59dd37(0x2bb)]=null;[_0x59dd37(0x3da)]=null;['opacityValuesBuffer']=null;[_0x59dd37(0x284)]=null;[_0x59dd37(0x230)]=0x0;[_0x59dd37(0x27f)]=0x0;constructor(_0x58f27e){const _0x1a3e3c=_0x59dd37;this[_0x1a3e3c(0x42e)]=_0x58f27e;}get[_0x59dd37(0x3b8)](){const _0x5b38ba=_0x59dd37;return[this[_0x5b38ba(0x230)],this['opacityStopCount']];}[_0x59dd37(0x2c7)](_0x357d84,_0x4d9d91){const _0x2d563a=_0x59dd37;_0x197675(_0x357d84,_0x4d9d91);let _0x3b03d6=new Float32Array(_0x357d84[_0x2d563a(0x2ec)]),_0x57d343=new Float32Array(_0x357d84[_0x2d563a(0x2ec)]*0x4),_0x5966a7=new Float32Array(_0x4d9d91['length']),_0x3006d6=new Float32Array(_0x4d9d91[_0x2d563a(0x2ec)]);for(let _0x309809=0x0;_0x309809<_0x357d84[_0x2d563a(0x2ec)];_0x309809+=0x1)_0x3b03d6[_0x309809]=_0x357d84[_0x309809][_0x2d563a(0x386)],_0x57d343['set'](_0x357d84[_0x309809][_0x2d563a(0x381)],_0x309809*0x4);for(let _0x3a412a=0x0;_0x3a412a<_0x4d9d91[_0x2d563a(0x2ec)];_0x3a412a+=0x1)_0x5966a7[_0x3a412a]=_0x4d9d91[_0x3a412a]['value'],_0x3006d6[_0x3a412a]=_0x4d9d91[_0x3a412a][_0x2d563a(0x405)];let _0x4686d0=[_0x3258a7(this['device'],_0x3b03d6,_0x2d563a(0x40c)),_0x3258a7(this[_0x2d563a(0x42e)],_0x57d343,_0x2d563a(0x3dc)),_0x3258a7(this[_0x2d563a(0x42e)],_0x5966a7,_0x2d563a(0x3eb)),_0x3258a7(this[_0x2d563a(0x42e)],_0x3006d6,_0x2d563a(0x248))];this[_0x2d563a(0x3c8)](),this[_0x2d563a(0x2bb)]=_0x4686d0[0x0],this[_0x2d563a(0x3da)]=_0x4686d0[0x1],this['opacityValuesBuffer']=_0x4686d0[0x2],this[_0x2d563a(0x284)]=_0x4686d0[0x3],this[_0x2d563a(0x230)]=_0x357d84[_0x2d563a(0x2ec)],this[_0x2d563a(0x27f)]=_0x4d9d91['length'];}[_0x59dd37(0x176)](_0x50c699){const _0x16bc08=_0x59dd37;if(!this[_0x16bc08(0x2bb)]||!this[_0x16bc08(0x3da)]||!this['opacityValuesBuffer']||!this[_0x16bc08(0x284)])throw Error(_0x16bc08(0x203));return this['device']['createBindGroup']({'label':_0x16bc08(0x435),'layout':_0x50c699,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x16bc08(0x2bb)]}},{'binding':0x1,'resource':{'buffer':this[_0x16bc08(0x3da)]}},{'binding':0x2,'resource':{'buffer':this['opacityValuesBuffer']}},{'binding':0x3,'resource':{'buffer':this[_0x16bc08(0x284)]}}]});}['destroy'](){const _0x3286ec=_0x59dd37;this[_0x3286ec(0x3c8)](),this[_0x3286ec(0x230)]=0x0,this[_0x3286ec(0x27f)]=0x0;}[_0x59dd37(0x3c8)](){const _0x5c3666=_0x59dd37;this[_0x5c3666(0x2bb)]?.[_0x5c3666(0x325)](),this[_0x5c3666(0x3da)]?.[_0x5c3666(0x325)](),this[_0x5c3666(0x2c5)]?.[_0x5c3666(0x325)](),this[_0x5c3666(0x284)]?.[_0x5c3666(0x325)](),this[_0x5c3666(0x2bb)]=null,this[_0x5c3666(0x3da)]=null,this[_0x5c3666(0x2c5)]=null,this[_0x5c3666(0x284)]=null;}};let _0x16b8aa=0x200*0x400*0x400,_0x14de72=[0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1],_0x471c9d=[{'value':0x0,'color':[0x0,0x0,0x1,0x1]},{'value':0x1,'color':[0x1,0x0,0x0,0x1]}],_0x100c1e=[{'value':0x0,'opacity':0x0},{'value':0x1,'opacity':0x1}],_0x3b804a=()=>({'color':{'srcFactor':_0x59dd37(0x144),'dstFactor':'one-minus-src-alpha','operation':_0x59dd37(0x45b)},'alpha':{'srcFactor':_0x59dd37(0x144),'dstFactor':_0x59dd37(0x1f8),'operation':_0x59dd37(0x45b)}}),_0x256b98=(_0x22e2f2,_0x10c838)=>{const _0x3b6a21=_0x59dd37;if(_0x22e2f2[_0x3b6a21(0x2ec)]!==0x10||_0x22e2f2['some'](_0x557585=>!Number['isFinite'](_0x557585)))throw Error(_0x10c838+_0x3b6a21(0x310)+_0x10c838+_0x3b6a21(0x1c3));},_0x717ebf=(_0x5e6752,_0x4023e5)=>{const _0x4dfccd=_0x59dd37;if(!Number[_0x4dfccd(0x42c)](_0x5e6752)||_0x5e6752<0x0)throw Error(_0x4023e5+_0x4dfccd(0x1e4)+_0x4023e5+_0x4dfccd(0x2c4));return _0x5e6752;},_0x57eb56=(_0x335c29,_0x43c695)=>{const _0x17d9b0=_0x59dd37;if(!Number['isFinite'](_0x335c29)||_0x335c29<=0x0)throw Error(_0x43c695+_0x17d9b0(0x371)+_0x43c695+'\x20必须是正有限数值。');return _0x335c29;},_0x5e037e=_0xc26179=>_0xc26179['map'](_0x36b7eb=>({..._0x36b7eb,'vertices':new Float32Array(_0x36b7eb[_0x59dd37(0x25a)])})),_0x1f6561=_0x289022=>{const _0x1286a5=_0x59dd37;let _0x4dd9f8=_0x289022['brickWidth']+_0x289022[_0x1286a5(0x3e8)]*0x2,_0xf68504=_0x289022[_0x1286a5(0x3ff)]+_0x289022[_0x1286a5(0x3e8)]*0x2,_0x305d10=_0x289022[_0x1286a5(0x28d)]+_0x289022['halo']*0x2;return Math[_0x1286a5(0x172)](_0x4dd9f8*Float32Array[_0x1286a5(0x266)]/0x100)*0x100*_0xf68504*_0x305d10+0x10;};var _0x57e3d1=class{[_0x59dd37(0x15b)];[_0x59dd37(0x1df)]=_0x59dd37(0x390);[_0x59dd37(0x190)]=null;[_0x59dd37(0x396)]=null;['device']=null;[_0x59dd37(0x44e)]=null;['format']=null;[_0x59dd37(0x291)]=null;[_0x59dd37(0x343)]=null;['geometryBindGroupLayout']=null;['sceneBindGroupLayout']=null;['volumeBindGroupLayout']=null;[_0x59dd37(0x3b4)]=null;[_0x59dd37(0x2e2)]=null;['geometryBindGroup']=null;['sceneBindGroup']=null;[_0x59dd37(0x137)]=null;['transferBindGroup']=null;[_0x59dd37(0x25b)]=null;[_0x59dd37(0x3c5)]=null;[_0x59dd37(0x414)]=null;['overlayTrianglePipeline']=null;[_0x59dd37(0x3c9)]=null;[_0x59dd37(0x431)]=null;[_0x59dd37(0x308)]=null;['attachments']=null;[_0x59dd37(0x305)]=null;[_0x59dd37(0x425)]=null;['profileResources']=null;[_0x59dd37(0x23f)]=null;[_0x59dd37(0x450)]=null;[_0x59dd37(0x2b0)]=null;['camera']={'viewProjection':_0x14de72,'inverseViewProjection':_0x14de72,'cameraPosition':[0x0,0x0,0x2]};[_0x59dd37(0x235)]=_0x14de72;[_0x59dd37(0x185)]=_0x14de72;[_0x59dd37(0x32a)]=[0x0,0x0,0x0];[_0x59dd37(0x24e)]=[0x1,0x1,0x1];[_0x59dd37(0x375)]='composite';[_0x59dd37(0x405)]=0.3;[_0x59dd37(0x270)]=0x1;[_0x59dd37(0x3f4)]=0.005;[_0x59dd37(0x32c)]=0x1;[_0x59dd37(0x321)]=_0x59dd37(0x3f9);[_0x59dd37(0x1d2)]=null;['colorStops']=_0x471c9d;['opacityStops']=_0x100c1e;['frameIndex']=0x0;[_0x59dd37(0x428)]=0x0;[_0x59dd37(0x31e)]=0x0;[_0x59dd37(0x267)]=0x0;[_0x59dd37(0x218)]=0x0;['lastFrameTimeMilliseconds']=0x0;['cachedProfiles']=[];['cachedSlices']=[];[_0x59dd37(0x1c9)]=[];[_0x59dd37(0x430)]=new Map();['pendingBrickUploads']=[];[_0x59dd37(0x30e)]=null;[_0x59dd37(0x378)]=0x0;[_0x59dd37(0x2c2)]=null;[_0x59dd37(0x167)]=0x0;[_0x59dd37(0x3a8)]=0x0;[_0x59dd37(0x3e7)]=0x0;[_0x59dd37(0x43c)]=0x0;[_0x59dd37(0x2b5)]=!0x1;[_0x59dd37(0x366)]=null;constructor(_0x56d612={}){const _0xbef8ab=_0x59dd37;this[_0xbef8ab(0x15b)]={..._0x56d612};}get[_0x59dd37(0x1a5)](){const _0x56a0a6=_0x59dd37;return this[_0x56a0a6(0x1df)];}get[_0x59dd37(0x370)](){const _0x14feb4=_0x59dd37;let _0x335d4d=this['atlas']?.[_0x14feb4(0x370)]??{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this['options']['memoryHardLimitBytes']??this[_0x14feb4(0x15b)]['memoryTargetBytes']??_0x16b8aa,'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0},_0x5bf772=this[_0x14feb4(0x23f)]?.[_0x14feb4(0x370)]??{'uniformUpdateCount':0x0,'resourceRebuildCount':0x0};return{'logicalBrickCount':_0x335d4d['logicalBrickCount'],'residentBrickCount':this[_0x14feb4(0x305)]?.['residentBrickCount']??0x0,'pendingBrickCount':0x0,'atlasCapacity':_0x335d4d[_0x14feb4(0x339)],'gpuBytes':_0x335d4d[_0x14feb4(0x3d1)],'memoryLimitBytes':_0x335d4d[_0x14feb4(0x2ca)],'budgetLimited':_0x335d4d[_0x14feb4(0x2fe)],'frameTimeMilliseconds':this[_0x14feb4(0x2aa)],'submittedFrameCount':this[_0x14feb4(0x428)],'uploadedBrickCount':this[_0x14feb4(0x3a8)],'uploadBatchCount':this[_0x14feb4(0x3e7)],'maximumUploadBatchBytes':this[_0x14feb4(0x43c)],'sliceUniformUpdateCount':_0x5bf772['uniformUpdateCount'],'sliceResourceRebuildCount':_0x5bf772[_0x14feb4(0x21d)],'skippedSamples':_0x335d4d[_0x14feb4(0x2c9)],'skippedCells':_0x335d4d['skippedCells']};}[_0x59dd37(0x1ec)](_0x31c027){const _0x4d96cf=_0x59dd37;this[_0x4d96cf(0x366)]=_0x31c027;}async[_0x59dd37(0x2ff)](_0x99ff85){const _0x5c1677=_0x59dd37;if(this[_0x5c1677(0x1df)]==='destroyed')throw Error(_0x5c1677(0x26f));let _0x1420c2=++this['initializationGeneration'];this[_0x5c1677(0x194)](),this[_0x5c1677(0x190)]=_0x99ff85,this[_0x5c1677(0x1df)]='initializing';let _0x4795a9=navigator[_0x5c1677(0x457)];if(!_0x4795a9)throw this[_0x5c1677(0x1df)]=_0x5c1677(0x390),Error(_0x5c1677(0x40f));let _0x11daa6=await _0x4795a9[_0x5c1677(0x38e)]({'powerPreference':this[_0x5c1677(0x15b)][_0x5c1677(0x15d)]??'high-performance'});if(_0x1420c2!==this[_0x5c1677(0x218)])return;if(!_0x11daa6)throw this['lifecycleState']=_0x5c1677(0x390),Error(_0x5c1677(0x24b));let _0x49cb28=await _0x11daa6[_0x5c1677(0x269)]();if(_0x1420c2!==this[_0x5c1677(0x218)]){_0x49cb28['destroy']();return;}let _0x4cc0a1=_0x99ff85[_0x5c1677(0x1ee)](_0x5c1677(0x329));if(!_0x4cc0a1)throw _0x49cb28['destroy'](),this[_0x5c1677(0x1df)]=_0x5c1677(0x390),Error('Failed\x20to\x20create\x20a\x20WebGPU\x20canvas\x20context\x20for\x20the\x20volume\x20scene.\x20无法为体积场景创建\x20WebGPU\x20Canvas\x20上下文。');let _0x511f34=_0x4795a9[_0x5c1677(0x1ff)]();_0x4cc0a1[_0x5c1677(0x312)]({'device':_0x49cb28,'format':_0x511f34,'alphaMode':_0x5c1677(0x25c),'usage':GPUTextureUsage['RENDER_ATTACHMENT']|GPUTextureUsage[_0x5c1677(0x353)]}),this[_0x5c1677(0x396)]=_0x11daa6,this[_0x5c1677(0x42e)]=_0x49cb28,this[_0x5c1677(0x44e)]=_0x4cc0a1,this[_0x5c1677(0x22b)]=_0x511f34,_0x49cb28[_0x5c1677(0x247)]('validation'),this[_0x5c1677(0x281)]();let _0x14d5b6=await _0x49cb28[_0x5c1677(0x417)]();if(_0x14d5b6)throw this['releaseGpuResources'](),this['lifecycleState']=_0x5c1677(0x390),Error(_0x5c1677(0x41b)+_0x14d5b6[_0x5c1677(0x1f0)]+'.\x20创建\x20WebGPU\x20体积管线失败。');if(this[_0x5c1677(0x42b)](_0x49cb28),this[_0x5c1677(0x1df)]=_0x5c1677(0x42d),this[_0x5c1677(0x2b0)]){this[_0x5c1677(0x2c3)](this[_0x5c1677(0x2b0)]);let _0x284b1f=Array[_0x5c1677(0x130)](this[_0x5c1677(0x430)][_0x5c1677(0x21e)]());await Promise[_0x5c1677(0x2b6)](_0x284b1f[_0x5c1677(0x139)](([_0x1ab928,_0x13c0cd])=>this[_0x5c1677(0x259)]({'logicalIndex':_0x1ab928,'values':_0x13c0cd},!0x1)));}this[_0x5c1677(0x1f2)](),this[_0x5c1677(0x29b)]()['replace'](this['cachedProfiles']),this[_0x5c1677(0x164)]()[_0x5c1677(0x436)](this[_0x5c1677(0x261)]),this[_0x5c1677(0x1d8)]()[_0x5c1677(0x436)](this[_0x5c1677(0x1c9)]),this[_0x5c1677(0x3e0)](_0x99ff85[_0x5c1677(0x31e)]||_0x99ff85[_0x5c1677(0x43b)]||0x1,_0x99ff85['height']||_0x99ff85[_0x5c1677(0x369)]||0x1);}[_0x59dd37(0x3ed)](_0x5d26a6){const _0x41e524=_0x59dd37;this[_0x41e524(0x378)]+=0x1,this['rejectPendingBrickUploads'](new DOMException('Volume\x20brick\x20upload\x20was\x20superseded\x20by\x20a\x20new\x20source.\x20体积砖上传已被新数据源替代。',_0x41e524(0x1bb))),this[_0x41e524(0x2b0)]={..._0x5d26a6},this['cachedBricks'][_0x41e524(0x2e0)](),this[_0x41e524(0x3a8)]=0x0,this[_0x41e524(0x3e7)]=0x0,this[_0x41e524(0x43c)]=0x0,this[_0x41e524(0x1df)]==='ready'&&this[_0x41e524(0x2c3)](_0x5d26a6);}[_0x59dd37(0x402)](_0x5910be){return this['enqueueBrickUpload'](_0x5910be,!0x0);}['touchBricks'](_0x43900d){const _0x135664=_0x59dd37;this[_0x135664(0x3fb)]()[_0x135664(0x362)](_0x43900d,this[_0x135664(0x1eb)]);for(let _0x4a767e of _0x43900d){let _0x3e5cdc=this[_0x135664(0x430)]['get'](_0x4a767e);_0x3e5cdc&&(this[_0x135664(0x430)]['delete'](_0x4a767e),this[_0x135664(0x430)][_0x135664(0x1ca)](_0x4a767e,_0x3e5cdc));}}[_0x59dd37(0x391)](_0x103d77){const _0x56eb8d=_0x59dd37;_0x256b98(_0x103d77[_0x56eb8d(0x301)],_0x56eb8d(0x301)),_0x256b98(_0x103d77['inverseViewProjection'],_0x56eb8d(0x1da)),this[_0x56eb8d(0x186)]={'viewProjection':[..._0x103d77[_0x56eb8d(0x301)]],'inverseViewProjection':[..._0x103d77[_0x56eb8d(0x1da)]],'cameraPosition':[..._0x103d77[_0x56eb8d(0x3ec)]]};}[_0x59dd37(0x3d7)](_0x39b970){const _0x249468=_0x59dd37;this[_0x249468(0x265)]=_0x5e037e(_0x39b970),this[_0x249468(0x29b)]()['replace'](_0x39b970);}[_0x59dd37(0x3e5)](_0x6df5c){const _0x285699=_0x59dd37;this[_0x285699(0x261)]=_0x6df5c[_0x285699(0x139)](_0x35323f=>({..._0x35323f})),this['getSliceResources']()[_0x285699(0x436)](_0x6df5c);}[_0x59dd37(0x1d4)](_0x1a20cf){const _0x26da4e=_0x59dd37;this[_0x26da4e(0x1c9)]=_0x5e037e(_0x1a20cf),this[_0x26da4e(0x1d8)]()[_0x26da4e(0x436)](_0x1a20cf);}[_0x59dd37(0x17c)](_0x6c456b,_0x6fb493,_0x3ebc17){const _0x3c330f=_0x59dd37;this[_0x3c330f(0x223)]=_0x6c456b[_0x3c330f(0x139)](_0x5ef44f=>({'value':_0x5ef44f[_0x3c330f(0x386)],'color':[..._0x5ef44f[_0x3c330f(0x381)]]})),this[_0x3c330f(0x2fc)]=_0x6fb493['map'](_0x631c54=>({..._0x631c54})),_0x3ebc17&&(this[_0x3c330f(0x321)]=_0x3ebc17),this['lifecycleState']==='ready'&&this[_0x3c330f(0x1f2)]();}[_0x59dd37(0x2c7)](_0x17d572){const _0x3e616e=_0x59dd37;_0x17d572['modelMatrix']&&(_0x256b98(_0x17d572[_0x3e616e(0x235)],_0x3e616e(0x235)),this[_0x3e616e(0x235)]=[..._0x17d572[_0x3e616e(0x235)]]),_0x17d572['inverseModelMatrix']&&(_0x256b98(_0x17d572[_0x3e616e(0x185)],'inverseModelMatrix'),this[_0x3e616e(0x185)]=[..._0x17d572['inverseModelMatrix']]),_0x17d572[_0x3e616e(0x32a)]&&(this['clipMinimum']=[..._0x17d572[_0x3e616e(0x32a)]]),_0x17d572['clipMaximum']&&(this[_0x3e616e(0x24e)]=[..._0x17d572[_0x3e616e(0x24e)]]),_0x17d572['renderMode']&&(this['renderMode']=_0x17d572['renderMode']),_0x17d572[_0x3e616e(0x405)]!==void 0x0&&(this['opacity']=_0x717ebf(_0x17d572[_0x3e616e(0x405)],'opacity')),_0x17d572[_0x3e616e(0x270)]!==void 0x0&&(this[_0x3e616e(0x270)]=_0x717ebf(_0x17d572[_0x3e616e(0x270)],_0x3e616e(0x270))),_0x17d572[_0x3e616e(0x3f4)]!==void 0x0&&(this['stepLength']=_0x57eb56(_0x17d572[_0x3e616e(0x3f4)],_0x3e616e(0x3f4))),_0x17d572[_0x3e616e(0x32c)]!==void 0x0&&(this[_0x3e616e(0x32c)]=_0x717ebf(_0x17d572[_0x3e616e(0x32c)],_0x3e616e(0x32c))),_0x17d572[_0x3e616e(0x321)]&&(this[_0x3e616e(0x321)]=_0x17d572[_0x3e616e(0x321)]),_0x17d572[_0x3e616e(0x1d2)]!==void 0x0&&(this[_0x3e616e(0x1d2)]=_0x17d572[_0x3e616e(0x1d2)]?{..._0x17d572[_0x3e616e(0x1d2)]}:null);}[_0x59dd37(0x3e0)](_0x45d716,_0x1fc618){const _0x56e99f=_0x59dd37;if(!Number[_0x56e99f(0x333)](_0x45d716)||!Number[_0x56e99f(0x333)](_0x1fc618)||_0x45d716<=0x0||_0x1fc618<=0x0)throw Error(_0x56e99f(0x3cf));let _0xa122b4=this[_0x56e99f(0x328)]();_0xa122b4[_0x56e99f(0x31e)]=_0x45d716,_0xa122b4[_0x56e99f(0x267)]=_0x1fc618,this[_0x56e99f(0x31e)]=_0x45d716,this[_0x56e99f(0x267)]=_0x1fc618,this[_0x56e99f(0x3c1)]()[_0x56e99f(0x3e0)](_0x45d716,_0x1fc618),this[_0x56e99f(0x37f)]();}[_0x59dd37(0x2e4)](){const _0x23d1e0=_0x59dd37;if(this[_0x23d1e0(0x1df)]!==_0x23d1e0(0x42d)||!this[_0x23d1e0(0x2b0)]||this['width']<=0x0||this[_0x23d1e0(0x267)]<=0x0||this[_0x23d1e0(0x2b5)])return!0x1;let _0x1f7a9f=performance[_0x23d1e0(0x277)]();this[_0x23d1e0(0x1eb)]+=0x1,this[_0x23d1e0(0x332)]();let _0xb83423=this[_0x23d1e0(0x18f)](),_0x5a172d=_0xb83423['createCommandEncoder']({'label':_0x23d1e0(0x189)}),_0x24428b=this[_0x23d1e0(0x1ee)]()[_0x23d1e0(0x44d)]()[_0x23d1e0(0x363)]();return this[_0x23d1e0(0x1bf)](_0x5a172d,_0x24428b),this[_0x23d1e0(0x13e)](_0x5a172d,_0x24428b),this[_0x23d1e0(0x1ae)](_0x5a172d,_0x24428b),_0xb83423['queue']['submit']([_0x5a172d[_0x23d1e0(0x20c)]()]),this[_0x23d1e0(0x2b5)]=!0x0,this[_0x23d1e0(0x428)]+=0x1,this['lastFrameTimeMilliseconds']=Math[_0x23d1e0(0x447)](0.000001,performance['now']()-_0x1f7a9f),_0xb83423[_0x23d1e0(0x13a)][_0x23d1e0(0x37b)]()[_0x23d1e0(0x272)](()=>{const _0x3210cf=_0x23d1e0;this[_0x3210cf(0x42e)]!==_0xb83423||this[_0x3210cf(0x1df)]!==_0x3210cf(0x42d)||(this['frameInFlight']=!0x1,this[_0x3210cf(0x366)]?.());})[_0x23d1e0(0x256)](()=>{const _0x19c134=_0x23d1e0;this[_0x19c134(0x42e)]===_0xb83423&&(this[_0x19c134(0x2b5)]=!0x1);}),!0x0;}async[_0x59dd37(0x278)](){const _0x420be7=_0x59dd37;if(this['lifecycleState']!==_0x420be7(0x42d)||!this[_0x420be7(0x2b0)]||this[_0x420be7(0x31e)]<=0x0||this[_0x420be7(0x267)]<=0x0)throw Error(_0x420be7(0x3a5));let _0x9312e4=this[_0x420be7(0x18f)](),_0x539da9=this[_0x420be7(0x31e)]*0x4,_0x5439a0=Math[_0x420be7(0x172)](_0x539da9/0x100)*0x100,_0x2abf35=_0x9312e4[_0x420be7(0x300)]({'label':'volume\x20frame\x20readback','size':_0x5439a0*this[_0x420be7(0x267)],'usage':GPUBufferUsage[_0x420be7(0x44a)]|GPUBufferUsage[_0x420be7(0x427)]});_0x9312e4[_0x420be7(0x247)](_0x420be7(0x318)),this[_0x420be7(0x1eb)]+=0x1,this['writeParams']();let _0x438085=_0x9312e4[_0x420be7(0x14b)]({'label':'volume\x20frame\x20capture'}),_0x588e43=this[_0x420be7(0x1ee)]()[_0x420be7(0x44d)](),_0x32fcb5=_0x588e43[_0x420be7(0x363)]();this[_0x420be7(0x1bf)](_0x438085,_0x32fcb5),this['encodeVolumePass'](_0x438085,_0x32fcb5),this[_0x420be7(0x1ae)](_0x438085,_0x32fcb5),_0x438085[_0x420be7(0x35c)]({'texture':_0x588e43},{'buffer':_0x2abf35,'bytesPerRow':_0x5439a0,'rowsPerImage':this[_0x420be7(0x267)]},[this['width'],this[_0x420be7(0x267)]]),_0x9312e4['queue']['submit']([_0x438085[_0x420be7(0x20c)]()]);let _0x559f53=await _0x9312e4[_0x420be7(0x417)]();if(_0x559f53)throw _0x2abf35[_0x420be7(0x325)](),Error(_0x420be7(0x1ce)+_0x559f53[_0x420be7(0x1f0)]+_0x420be7(0x374));await _0x2abf35[_0x420be7(0x3cd)](GPUMapMode[_0x420be7(0x423)]);let _0x80e788=new Uint8Array(_0x2abf35[_0x420be7(0x359)]()),_0x50390a=new Uint8Array(_0x539da9*this['height']),_0x164738=this['getFormat']()==='bgra8unorm';for(let _0x5a7b44=0x0;_0x5a7b44<this[_0x420be7(0x267)];_0x5a7b44+=0x1){let _0x432eae=_0x80e788[_0x420be7(0x211)](_0x5a7b44*_0x5439a0,_0x5a7b44*_0x5439a0+_0x539da9),_0x36d58b=_0x5a7b44*_0x539da9;if(!_0x164738){_0x50390a[_0x420be7(0x1ca)](_0x432eae,_0x36d58b);continue;}for(let _0x1898ab=0x0;_0x1898ab<this[_0x420be7(0x31e)];_0x1898ab+=0x1){let _0x2e3c01=_0x1898ab*0x4,_0x5590be=_0x36d58b+_0x2e3c01;_0x50390a[_0x5590be]=_0x432eae[_0x2e3c01+0x2],_0x50390a[_0x5590be+0x1]=_0x432eae[_0x2e3c01+0x1],_0x50390a[_0x5590be+0x2]=_0x432eae[_0x2e3c01],_0x50390a[_0x5590be+0x3]=_0x432eae[_0x2e3c01+0x3];}}return _0x2abf35['unmap'](),_0x2abf35[_0x420be7(0x325)](),this[_0x420be7(0x428)]+=0x1,{'width':this[_0x420be7(0x31e)],'height':this[_0x420be7(0x267)],'pixels':_0x50390a};}[_0x59dd37(0x325)](){const _0x9d0a65=_0x59dd37;this[_0x9d0a65(0x1df)]!==_0x9d0a65(0x146)&&(++this[_0x9d0a65(0x218)],this[_0x9d0a65(0x194)](),this[_0x9d0a65(0x190)]=null,this[_0x9d0a65(0x2b0)]=null,this[_0x9d0a65(0x366)]=null,this[_0x9d0a65(0x1df)]=_0x9d0a65(0x146));}['createGpuResources'](){const _0x1e186d=_0x59dd37;let _0x37da00=this[_0x1e186d(0x18f)]();this[_0x1e186d(0x291)]=_0x37da00[_0x1e186d(0x300)]({'label':_0x1e186d(0x182),'size':0x190,'usage':GPUBufferUsage[_0x1e186d(0x12c)]|GPUBufferUsage['COPY_DST']}),this[_0x1e186d(0x343)]=_0x37da00[_0x1e186d(0x300)]({'label':'volume\x20metadata\x20params','size':0x60,'usage':GPUBufferUsage[_0x1e186d(0x12c)]|GPUBufferUsage[_0x1e186d(0x44a)]}),this[_0x1e186d(0x29a)]=_0x37da00[_0x1e186d(0x383)]({'label':_0x1e186d(0x220),'entries':[{'binding':0x0,'visibility':GPUShaderStage['VERTEX']|GPUShaderStage[_0x1e186d(0x22a)],'buffer':{'type':_0x1e186d(0x27b)}}]}),this[_0x1e186d(0x1af)]=_0x37da00['createBindGroupLayout']({'label':'volume\x20scene\x20bind\x20group\x20layout','entries':[{'binding':0x0,'visibility':GPUShaderStage['VERTEX']|GPUShaderStage[_0x1e186d(0x22a)],'buffer':{'type':_0x1e186d(0x27b)}},{'binding':0x1,'visibility':GPUShaderStage[_0x1e186d(0x22a)],'texture':{'sampleType':'depth'}}]}),this[_0x1e186d(0x45a)]=_0x37da00[_0x1e186d(0x383)]({'label':_0x1e186d(0x40d),'entries':[...Array['from']({'length':0x8},(_0x2d841c,_0x3c6571)=>({'binding':_0x3c6571,'visibility':GPUShaderStage['FRAGMENT'],'texture':{'sampleType':_0x1e186d(0x215),'viewDimension':'3d'}})),{'binding':0x8,'visibility':GPUShaderStage[_0x1e186d(0x22a)],'buffer':{'type':_0x1e186d(0x1dc)}},{'binding':0x9,'visibility':GPUShaderStage['FRAGMENT'],'buffer':{'type':_0x1e186d(0x27b)}}]}),this[_0x1e186d(0x3b4)]=_0x37da00[_0x1e186d(0x383)]({'label':_0x1e186d(0x36f),'entries':[0x0,0x1,0x2,0x3][_0x1e186d(0x139)](_0x86a28f=>({'binding':_0x86a28f,'visibility':GPUShaderStage[_0x1e186d(0x22a)],'buffer':{'type':_0x1e186d(0x1dc)}}))}),this[_0x1e186d(0x2e2)]=_0x37da00[_0x1e186d(0x383)]({'label':_0x1e186d(0x1c6),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x1e186d(0x1b1)]|GPUShaderStage['FRAGMENT'],'buffer':{'type':'uniform'}}]}),this[_0x1e186d(0x160)]=new _0x5e946f(_0x37da00),this[_0x1e186d(0x425)]=new _0x505c86(_0x37da00),this[_0x1e186d(0x44b)]=new _0xf10edd(_0x37da00),this[_0x1e186d(0x23f)]=new _0x26c231(_0x37da00,this[_0x1e186d(0x45e)]()),this['axisResources']=new _0xf10edd(_0x37da00),this[_0x1e186d(0x1a3)]();}['createPipelines'](){const _0x25952a=_0x59dd37;let _0x557846=this[_0x25952a(0x18f)](),_0x367215=this[_0x25952a(0x341)](),_0x3b5586=this[_0x25952a(0x421)](),_0x17451c=this[_0x25952a(0x174)](),_0x48de1f=_0x557846['createShaderModule']({'label':_0x25952a(0x19c),'code':_0x39942e}),_0x4faa13={'module':_0x48de1f,'entryPoint':_0x25952a(0x1c4),'buffers':[{'arrayStride':0x1c,'attributes':[{'shaderLocation':0x0,'offset':0x0,'format':'float32x3'},{'shaderLocation':0x1,'offset':0xc,'format':_0x25952a(0x2a1)}]}]},_0x550cb9={'module':_0x48de1f,'entryPoint':_0x25952a(0x14f),'targets':[{'format':_0x367215,'blend':_0x3b804a()}]},_0x3d9c59=(_0x11e359,_0x22a513)=>_0x557846[_0x25952a(0x2c0)]({'layout':_0x557846['createPipelineLayout']({'bindGroupLayouts':[_0x3b5586]}),'vertex':_0x4faa13,'fragment':_0x550cb9,'primitive':{'topology':_0x11e359},'depthStencil':_0x22a513?{'format':'depth32float','depthWriteEnabled':!0x0,'depthCompare':_0x25952a(0x28c)}:void 0x0});this[_0x25952a(0x3c5)]=_0x3d9c59(_0x25952a(0x313),!0x0),this[_0x25952a(0x414)]=_0x3d9c59('line-list',!0x0),this[_0x25952a(0x210)]=_0x3d9c59(_0x25952a(0x313),!0x1),this['overlayLinePipeline']=_0x3d9c59(_0x25952a(0x198),!0x1);let _0x4c79d3=_0x557846['createShaderModule']({'label':'volume\x20raymarch\x20shader','code':_0x4b21de});this[_0x25952a(0x25b)]=_0x557846['createRenderPipeline']({'layout':_0x557846[_0x25952a(0x14c)]({'bindGroupLayouts':[_0x17451c,this[_0x25952a(0x34a)](),this[_0x25952a(0x1de)]()]}),'vertex':{'module':_0x4c79d3,'entryPoint':'vertexMain'},'fragment':{'module':_0x4c79d3,'entryPoint':_0x25952a(0x14f),'targets':[{'format':_0x367215,'blend':_0x3b804a()}]},'primitive':{'topology':'triangle-list'}});let _0x1c4612=_0x557846[_0x25952a(0x15a)]({'label':'volume\x20slice\x20shader','code':_0x284b17}),_0x49c89a=_0x40233d=>_0x557846[_0x25952a(0x2c0)]({'layout':_0x557846[_0x25952a(0x14c)]({'bindGroupLayouts':[_0x3b5586,this[_0x25952a(0x34a)](),this['getTransferBindGroupLayout'](),this[_0x25952a(0x45e)]()]}),'vertex':{'module':_0x1c4612,'entryPoint':_0x25952a(0x1c4)},'fragment':{'module':_0x1c4612,'entryPoint':_0x25952a(0x14f),'targets':[{'format':_0x367215,'blend':_0x3b804a()}]},'primitive':{'topology':_0x25952a(0x313)},'depthStencil':_0x40233d?{'format':_0x25952a(0x24c),'depthWriteEnabled':!0x0,'depthCompare':_0x25952a(0x28c)}:void 0x0});this[_0x25952a(0x431)]=_0x49c89a(!0x0),this[_0x25952a(0x308)]=_0x49c89a(!0x1);}[_0x59dd37(0x2c3)](_0x3f2018){const _0xb6e918=_0x59dd37;this[_0xb6e918(0x305)]?.['destroy'](),this['atlas']=new _0x443a7e(this['getDevice'](),this[_0xb6e918(0x15b)][_0xb6e918(0x2c6)]??_0x16b8aa,this[_0xb6e918(0x15b)]['memoryHardLimitBytes']??this[_0xb6e918(0x15b)]['memoryTargetBytes']??_0x16b8aa),this['atlas'][_0xb6e918(0x312)](_0x3f2018),this[_0xb6e918(0x377)](),this[_0xb6e918(0x137)]=this[_0xb6e918(0x305)][_0xb6e918(0x176)](this[_0xb6e918(0x34a)](),this[_0xb6e918(0x181)]());}[_0x59dd37(0x259)](_0x2880b9,_0x106a93){return new Promise((_0x519b37,_0x111dde)=>{const _0x5af693=_0x44e0;this[_0x5af693(0x1c5)][_0x5af693(0x222)]({'upload':_0x2880b9,'generation':this['uploadGeneration'],'cacheOnSuccess':_0x106a93,'resolve':_0x519b37,'reject':_0x111dde}),this[_0x5af693(0x14d)]();});}[_0x59dd37(0x14d)](){const _0x3bb0ec=_0x59dd37;this[_0x3bb0ec(0x30e)]||=Promise[_0x3bb0ec(0x22c)]()[_0x3bb0ec(0x272)](()=>this[_0x3bb0ec(0x136)]())[_0x3bb0ec(0x2d6)](()=>{const _0x59abfd=_0x3bb0ec;this[_0x59abfd(0x30e)]=null,this['pendingBrickUploads']['length']>0x0&&this[_0x59abfd(0x1df)]==='ready'&&this[_0x59abfd(0x14d)]();});}async[_0x59dd37(0x136)](){const _0x103f63=_0x59dd37;for(;this[_0x103f63(0x1c5)][_0x103f63(0x2ec)]>0x0&&this[_0x103f63(0x1df)]===_0x103f63(0x42d)&&this['metadata'];){let _0x366247=this[_0x103f63(0x18f)](),_0x4be749=_0x1f6561(this[_0x103f63(0x2b0)]),_0x3c44d1=Math[_0x103f63(0x37d)](0x4000000,Math[_0x103f63(0x447)](_0x4be749,Math[_0x103f63(0x330)](_0x366247[_0x103f63(0x254)][_0x103f63(0x22e)]/0x4))),_0x3193d6=[],_0x82c257=0x0;for(;this[_0x103f63(0x1c5)][_0x103f63(0x2ec)]>0x0&&_0x3193d6[_0x103f63(0x2ec)]<0x10;){let _0xfcf798=this[_0x103f63(0x1c5)][0x0];if(_0x3193d6[_0x103f63(0x2ec)]>0x0&&_0x82c257+_0x4be749>_0x3c44d1)break;if(this[_0x103f63(0x1c5)]['shift'](),_0xfcf798[_0x103f63(0x395)]!==this[_0x103f63(0x378)]){_0xfcf798[_0x103f63(0x354)](new DOMException(_0x103f63(0x3d4),'AbortError'));continue;}_0x3193d6[_0x103f63(0x222)](_0xfcf798),_0x82c257+=_0x4be749;}if(_0x3193d6[_0x103f63(0x2ec)]!==0x0)try{let _0x416a4f=[],_0x1f56ce=0x0;for(let _0x17d0b4 of _0x3193d6){let _0xae22a8=this['getAtlas']()[_0x103f63(0x33e)](_0x17d0b4[_0x103f63(0x1f4)],this[_0x103f63(0x1eb)]),_0x1a43b8=Math[_0x103f63(0x172)](_0x1f56ce/0x100)*0x100;_0x416a4f[_0x103f63(0x222)]({'item':_0x17d0b4,'prepared':_0xae22a8,'bufferOffset':_0x1a43b8}),_0x1f56ce=_0x1a43b8+_0xae22a8[_0x103f63(0x2d2)][_0x103f63(0x3c2)];}let _0x51b855=this['getUploadStagingBuffer'](_0x1f56ce);await _0x51b855['mapAsync'](GPUMapMode[_0x103f63(0x34b)]);let _0x593ed=new Uint8Array(_0x51b855[_0x103f63(0x359)]());for(let _0x2f99c1 of _0x416a4f){let _0x577171=_0x2f99c1[_0x103f63(0x20b)][_0x103f63(0x2d2)];_0x593ed[_0x103f63(0x1ca)](new Uint8Array(_0x577171[_0x103f63(0x3e4)],_0x577171['byteOffset'],_0x577171[_0x103f63(0x3c2)]),_0x2f99c1[_0x103f63(0x209)]);}_0x51b855[_0x103f63(0x2ba)]();let _0x3ae7fd=_0x366247[_0x103f63(0x14b)]({'label':_0x103f63(0x440)});for(let _0x5641e7 of _0x416a4f)this['getAtlas']()['encodePreparedBrickUpload'](_0x3ae7fd,_0x51b855,_0x5641e7[_0x103f63(0x209)],_0x5641e7[_0x103f63(0x20b)]);_0x366247[_0x103f63(0x13a)][_0x103f63(0x454)]([_0x3ae7fd['finish']()]),await _0x366247[_0x103f63(0x13a)]['onSubmittedWorkDone'](),await new Promise(_0x4ef789=>setTimeout(_0x4ef789,0x0)),this[_0x103f63(0x3a8)]+=_0x3193d6[_0x103f63(0x2ec)],this[_0x103f63(0x3e7)]+=0x1,this[_0x103f63(0x43c)]=Math[_0x103f63(0x447)](this[_0x103f63(0x43c)],_0x82c257);for(let _0x3d8823 of _0x3193d6){if(_0x3d8823['generation']!==this[_0x103f63(0x378)]){_0x3d8823[_0x103f63(0x354)](new DOMException(_0x103f63(0x3d4),_0x103f63(0x1bb)));continue;}_0x3d8823['cacheOnSuccess']&&this[_0x103f63(0x27a)](_0x3d8823[_0x103f63(0x1f4)]),_0x3d8823[_0x103f63(0x22c)]();}}catch(_0x33a887){for(let _0x5128fe of _0x3193d6)_0x5128fe[_0x103f63(0x354)](_0x33a887);}}}[_0x59dd37(0x3b3)](_0x16dde){const _0x5aa93a=_0x59dd37;let _0x242e72=Math[_0x5aa93a(0x447)](0x100,Math[_0x5aa93a(0x172)](_0x16dde/0x100)*0x100);return this[_0x5aa93a(0x2c2)]&&this[_0x5aa93a(0x167)]>=_0x242e72?this[_0x5aa93a(0x2c2)]:(this[_0x5aa93a(0x2c2)]?.[_0x5aa93a(0x325)](),this[_0x5aa93a(0x2c2)]=this[_0x5aa93a(0x18f)]()[_0x5aa93a(0x300)]({'label':_0x5aa93a(0x1fc),'size':_0x242e72,'usage':GPUBufferUsage['MAP_WRITE']|GPUBufferUsage[_0x5aa93a(0x353)]}),this[_0x5aa93a(0x167)]=_0x242e72,this[_0x5aa93a(0x2c2)]);}['cacheBrickUpload'](_0x5d2b4d){const _0x412556=_0x59dd37;for(this['cachedBricks'][_0x412556(0x23d)](_0x5d2b4d[_0x412556(0x166)]),this[_0x412556(0x430)][_0x412556(0x1ca)](_0x5d2b4d[_0x412556(0x166)],new Float32Array(_0x5d2b4d['values']));this[_0x412556(0x430)][_0x412556(0x406)]>this[_0x412556(0x370)][_0x412556(0x339)];){let _0x5c99f6=this['cachedBricks'][_0x412556(0x1f3)]()[_0x412556(0x156)]()[_0x412556(0x386)];if(_0x5c99f6===void 0x0)break;this['cachedBricks'][_0x412556(0x23d)](_0x5c99f6);}}['rejectPendingBrickUploads'](_0x2bc7a7){const _0x2b5d0c=_0x59dd37;for(let _0x263de1 of this[_0x2b5d0c(0x1c5)][_0x2b5d0c(0x419)](0x0))_0x263de1[_0x2b5d0c(0x354)](_0x2bc7a7);}[_0x59dd37(0x1f2)](){const _0x2ace94=_0x59dd37;let _0x394828=this['getTransferResources']();_0x394828['update'](this['colorStops'],this[_0x2ace94(0x2fc)]),this[_0x2ace94(0x242)]=_0x394828['createBindGroup'](this['getTransferBindGroupLayout']());}[_0x59dd37(0x37f)](){const _0x2a1173=_0x59dd37;!this[_0x2a1173(0x291)]||!this[_0x2a1173(0x160)]||!this[_0x2a1173(0x29a)]||!this[_0x2a1173(0x1af)]||(this[_0x2a1173(0x392)]=this[_0x2a1173(0x18f)]()[_0x2a1173(0x176)]({'label':_0x2a1173(0x239),'layout':this[_0x2a1173(0x29a)],'entries':[{'binding':0x0,'resource':{'buffer':this[_0x2a1173(0x291)]}}]}),this[_0x2a1173(0x286)]=this[_0x2a1173(0x18f)]()[_0x2a1173(0x176)]({'label':_0x2a1173(0x38f),'layout':this[_0x2a1173(0x1af)],'entries':[{'binding':0x0,'resource':{'buffer':this[_0x2a1173(0x291)]}},{'binding':0x1,'resource':this[_0x2a1173(0x160)][_0x2a1173(0x3d0)]}]}));}[_0x59dd37(0x332)](){const _0x5a995b=_0x59dd37;let _0x199b51=new Float32Array(0x64);_0x199b51[_0x5a995b(0x1ca)](this[_0x5a995b(0x186)][_0x5a995b(0x301)],0x0),_0x199b51[_0x5a995b(0x1ca)](this[_0x5a995b(0x186)][_0x5a995b(0x1da)],0x10),_0x199b51[_0x5a995b(0x1ca)](this['modelMatrix'],0x20),_0x199b51[_0x5a995b(0x1ca)](this['inverseModelMatrix'],0x30),_0x199b51[_0x5a995b(0x1ca)]([...this[_0x5a995b(0x186)]['cameraPosition'],0x1],0x40),_0x199b51[_0x5a995b(0x1ca)]([this[_0x5a995b(0x31e)],this[_0x5a995b(0x267)],0x1/this['width'],0x1/this[_0x5a995b(0x267)]],0x44),_0x199b51['set']([...this[_0x5a995b(0x32a)],0x0],0x48),_0x199b51[_0x5a995b(0x1ca)]([...this[_0x5a995b(0x24e)],0x0],0x4c),_0x199b51[_0x5a995b(0x1ca)]([+(this[_0x5a995b(0x375)]==='maximum'),this[_0x5a995b(0x405)],this['densityScale'],this['stepLength']],0x50),_0x199b51['set']([this[_0x5a995b(0x223)][_0x5a995b(0x2ec)],this['opacityStops'][_0x5a995b(0x2ec)],this[_0x5a995b(0x32c)],+(this[_0x5a995b(0x321)]===_0x5a995b(0x306))],0x54);let _0xdf2aa5=this[_0x5a995b(0x1d2)];_0xdf2aa5&&(_0x199b51[_0x5a995b(0x1ca)]([0x1,..._0xdf2aa5[_0x5a995b(0x1e5)]],0x58),_0x199b51[_0x5a995b(0x1ca)]([_0xdf2aa5[_0x5a995b(0x3a6)],_0xdf2aa5[_0x5a995b(0x225)],..._0xdf2aa5['longitudeRadians']],0x5c),_0x199b51[_0x5a995b(0x1ca)]([..._0xdf2aa5[_0x5a995b(0x2f7)],..._0xdf2aa5['heightScaled']],0x60)),this[_0x5a995b(0x18f)]()['queue'][_0x5a995b(0x258)](this[_0x5a995b(0x34c)](),0x0,_0x199b51);}[_0x59dd37(0x377)](){const _0x115d4d=_0x59dd37;let _0x4a5079=this[_0x115d4d(0x2b0)],_0x435650=this[_0x115d4d(0x305)];if(!_0x4a5079||!_0x435650)return;let _0x3f02a7=_0x435650[_0x115d4d(0x238)],_0x2d892c=new Uint32Array(0x60/0x4),_0x5c87a1=Math[_0x115d4d(0x172)](_0x4a5079[_0x115d4d(0x280)][_0x115d4d(0x399)]/_0x4a5079['brickWidth']),_0x1ea66d=Math[_0x115d4d(0x172)](_0x4a5079['yAxis'][_0x115d4d(0x399)]/_0x4a5079[_0x115d4d(0x3ff)]),_0x1ed900=Math[_0x115d4d(0x172)](_0x4a5079[_0x115d4d(0x3ba)]['count']/_0x4a5079[_0x115d4d(0x28d)]);_0x2d892c[_0x115d4d(0x1ca)]([_0x4a5079[_0x115d4d(0x280)]['count'],_0x4a5079[_0x115d4d(0x295)][_0x115d4d(0x399)],_0x4a5079[_0x115d4d(0x3ba)][_0x115d4d(0x399)],0x0],0x0),_0x2d892c[_0x115d4d(0x1ca)]([_0x4a5079[_0x115d4d(0x25d)],_0x4a5079['brickHeight'],_0x4a5079[_0x115d4d(0x28d)],0x1],0x4),_0x2d892c[_0x115d4d(0x1ca)]([_0x5c87a1,_0x1ea66d,_0x1ed900,0x0],0x8),_0x2d892c[_0x115d4d(0x1ca)]([_0x3f02a7['slotCountX'],_0x3f02a7['slotCountY'],_0x3f02a7['slotCountZ'],_0x3f02a7[_0x115d4d(0x1fa)]],0xc),_0x2d892c['set']([(_0x4a5079[_0x115d4d(0x25d)]+0x2)*_0x3f02a7[_0x115d4d(0x3cc)],(_0x4a5079[_0x115d4d(0x3ff)]+0x2)*_0x3f02a7['slotCountY'],(_0x4a5079[_0x115d4d(0x28d)]+0x2)*_0x3f02a7[_0x115d4d(0x20a)],0x0],0x10),new Float32Array(_0x2d892c[_0x115d4d(0x3e4)])[_0x115d4d(0x1ca)]([_0x4a5079['noData']??0x0,_0x4a5079[_0x115d4d(0x2e1)]===void 0x0?0x0:0x1,0x0,0x0],0x14),this[_0x115d4d(0x18f)]()['queue']['writeBuffer'](this[_0x115d4d(0x181)](),0x0,_0x2d892c);}[_0x59dd37(0x1bf)](_0x26ad6f,_0x27c21e){const _0x4cd4f4=_0x59dd37;let _0x135c22=_0x26ad6f['beginRenderPass']({'label':_0x4cd4f4(0x2cd),'colorAttachments':[{'view':_0x27c21e,'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':'clear','storeOp':'store'}],'depthStencilAttachment':{'view':this['getAttachments']()[_0x4cd4f4(0x3d0)],'depthClearValue':0x1,'depthLoadOp':_0x4cd4f4(0x2e0),'depthStoreOp':'store'}});this[_0x4cd4f4(0x348)](_0x135c22,_0x4cd4f4(0x2cf)),this[_0x4cd4f4(0x282)](_0x135c22,_0x4cd4f4(0x2cf)),_0x135c22[_0x4cd4f4(0x326)]();}[_0x59dd37(0x13e)](_0x4a744c,_0x1a3bb7){const _0x27dfef=_0x59dd37;if(!this[_0x27dfef(0x137)]||!this[_0x27dfef(0x242)]||!this[_0x27dfef(0x286)]||!this[_0x27dfef(0x25b)])return;let _0x280e2a=_0x4a744c['beginRenderPass']({'label':_0x27dfef(0x30a),'colorAttachments':[{'view':_0x1a3bb7,'loadOp':_0x27dfef(0x364),'storeOp':'store'}]});_0x280e2a[_0x27dfef(0x31d)](this[_0x27dfef(0x25b)]),_0x280e2a['setBindGroup'](0x0,this[_0x27dfef(0x286)]),_0x280e2a['setBindGroup'](0x1,this[_0x27dfef(0x137)]),_0x280e2a[_0x27dfef(0x36e)](0x2,this[_0x27dfef(0x242)]),_0x280e2a['draw'](0x3),_0x280e2a[_0x27dfef(0x326)]();}['encodeOverlayPass'](_0x2dbab7,_0x332ab2){const _0x20f9d2=_0x59dd37;let _0x3a4ccb=_0x2dbab7[_0x20f9d2(0x20d)]({'label':'volume\x20always\x20visible\x20pass','colorAttachments':[{'view':_0x332ab2,'loadOp':'load','storeOp':'store'}]});this[_0x20f9d2(0x348)](_0x3a4ccb,_0x20f9d2(0x2f8)),this[_0x20f9d2(0x282)](_0x3a4ccb,_0x20f9d2(0x2f8)),_0x3a4ccb[_0x20f9d2(0x326)]();}[_0x59dd37(0x348)](_0xc7a3a6,_0x2a3398){const _0x5d6493=_0x59dd37;let _0x573b2d=this[_0x5d6493(0x392)];if(!_0x573b2d)return;let _0x1e3a19=_0x2a3398===_0x5d6493(0x2cf)?this['sceneTrianglePipeline']:this[_0x5d6493(0x210)],_0x462b64=_0x2a3398===_0x5d6493(0x2cf)?this[_0x5d6493(0x414)]:this['overlayLinePipeline'];_0x1e3a19&&(_0xc7a3a6[_0x5d6493(0x31d)](_0x1e3a19),_0xc7a3a6['setBindGroup'](0x0,_0x573b2d),this[_0x5d6493(0x44b)]?.[_0x5d6493(0x397)](_0xc7a3a6,_0x5d6493(0x313),_0x2a3398),this[_0x5d6493(0x450)]?.['draw'](_0xc7a3a6,'triangle-list',_0x2a3398)),_0x462b64&&(_0xc7a3a6[_0x5d6493(0x31d)](_0x462b64),_0xc7a3a6[_0x5d6493(0x36e)](0x0,_0x573b2d),this[_0x5d6493(0x44b)]?.[_0x5d6493(0x397)](_0xc7a3a6,_0x5d6493(0x198),_0x2a3398),this['axisResources']?.[_0x5d6493(0x397)](_0xc7a3a6,'line-list',_0x2a3398));}['drawSlices'](_0x347720,_0x145bfe){const _0x5b10db=_0x59dd37;let _0x4eb28f=_0x145bfe===_0x5b10db(0x2cf)?this[_0x5b10db(0x431)]:this['overlaySlicePipeline'];!_0x4eb28f||!this[_0x5b10db(0x392)]||!this['volumeBindGroup']||!this['transferBindGroup']||(_0x347720[_0x5b10db(0x36e)](0x0,this[_0x5b10db(0x392)]),_0x347720[_0x5b10db(0x36e)](0x1,this['volumeBindGroup']),_0x347720['setBindGroup'](0x2,this[_0x5b10db(0x242)]),this[_0x5b10db(0x23f)]?.[_0x5b10db(0x397)](_0x347720,_0x4eb28f,_0x145bfe));}[_0x59dd37(0x42b)](_0x2c5c05){const _0x34440d=_0x59dd37;_0x2c5c05['lost'][_0x34440d(0x272)](_0x3d7a0b=>{const _0x585020=_0x34440d;if(this[_0x585020(0x42e)]!==_0x2c5c05||this['lifecycleState']===_0x585020(0x146))return;this['lifecycleState']=_0x585020(0x41f),console[_0x585020(0x3ee)](_0x585020(0x2fd)+_0x3d7a0b[_0x585020(0x1f0)]+_0x585020(0x2d0));let _0x550555=this[_0x585020(0x190)];this['releaseGpuResources'](),_0x550555&&this['initialize'](_0x550555)[_0x585020(0x256)](_0x2331a9=>{const _0x5cd945=_0x585020;console['error'](_0x5cd945(0x29f),_0x2331a9);});});}[_0x59dd37(0x194)](){const _0x34cfff=_0x59dd37;this['uploadGeneration']+=0x1,this[_0x34cfff(0x387)](new DOMException(_0x34cfff(0x307),'AbortError')),this[_0x34cfff(0x305)]?.[_0x34cfff(0x325)](),this[_0x34cfff(0x425)]?.['destroy'](),this['profileResources']?.[_0x34cfff(0x325)](),this[_0x34cfff(0x23f)]?.[_0x34cfff(0x325)](),this[_0x34cfff(0x450)]?.[_0x34cfff(0x325)](),this[_0x34cfff(0x160)]?.[_0x34cfff(0x325)](),this['sceneParamsBuffer']?.[_0x34cfff(0x325)](),this['volumeParamsBuffer']?.['destroy'](),this[_0x34cfff(0x2c2)]?.[_0x34cfff(0x325)]();try{this[_0x34cfff(0x44e)]?.[_0x34cfff(0x18d)]();}catch{}this['device']?.[_0x34cfff(0x325)](),this[_0x34cfff(0x396)]=null,this[_0x34cfff(0x42e)]=null,this[_0x34cfff(0x44e)]=null,this[_0x34cfff(0x22b)]=null,this[_0x34cfff(0x291)]=null,this[_0x34cfff(0x343)]=null,this[_0x34cfff(0x2c2)]=null,this[_0x34cfff(0x167)]=0x0,this[_0x34cfff(0x29a)]=null,this['sceneBindGroupLayout']=null,this['volumeBindGroupLayout']=null,this[_0x34cfff(0x3b4)]=null,this[_0x34cfff(0x2e2)]=null,this[_0x34cfff(0x392)]=null,this[_0x34cfff(0x286)]=null,this[_0x34cfff(0x137)]=null,this[_0x34cfff(0x242)]=null,this['volumePipeline']=null,this[_0x34cfff(0x3c5)]=null,this['sceneLinePipeline']=null,this[_0x34cfff(0x210)]=null,this[_0x34cfff(0x3c9)]=null,this[_0x34cfff(0x431)]=null,this[_0x34cfff(0x308)]=null,this[_0x34cfff(0x160)]=null,this[_0x34cfff(0x305)]=null,this['transferResources']=null,this['profileResources']=null,this[_0x34cfff(0x23f)]=null,this[_0x34cfff(0x450)]=null,this['frameInFlight']=!0x1,this['width']=0x0,this['height']=0x0;}[_0x59dd37(0x18f)](){if(!this['device'])throw Error('WebGPU\x20volume\x20device\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20device\x20尚未初始化。');return this['device'];}[_0x59dd37(0x1ee)](){const _0x332431=_0x59dd37;if(!this['context'])throw Error(_0x332431(0x2ef));return this[_0x332431(0x44e)];}[_0x59dd37(0x341)](){const _0xef1665=_0x59dd37;if(!this[_0xef1665(0x22b)])throw Error(_0xef1665(0x1b3));return this[_0xef1665(0x22b)];}[_0x59dd37(0x328)](){const _0x299a9b=_0x59dd37;if(!this[_0x299a9b(0x190)])throw Error(_0x299a9b(0x432));return this['canvas'];}[_0x59dd37(0x3c1)](){const _0x323810=_0x59dd37;if(!this[_0x323810(0x160)])throw Error(_0x323810(0x1d1));return this[_0x323810(0x160)];}[_0x59dd37(0x3fb)](){const _0x452e75=_0x59dd37;if(!this[_0x452e75(0x305)])throw Error(_0x452e75(0x199));return this[_0x452e75(0x305)];}['getTransferResources'](){const _0x5098ab=_0x59dd37;if(!this[_0x5098ab(0x425)])throw Error(_0x5098ab(0x3ca));return this['transferResources'];}['getProfileResources'](){if(!this['profileResources'])throw Error('WebGPU\x20profile\x20resources\x20are\x20unavailable.\x20WebGPU\x20剖面资源不可用。');return this['profileResources'];}['getSliceResources'](){const _0x34a649=_0x59dd37;if(!this[_0x34a649(0x23f)])throw Error(_0x34a649(0x372));return this[_0x34a649(0x23f)];}['getAxisResources'](){const _0x2434ad=_0x59dd37;if(!this['axisResources'])throw Error('WebGPU\x20axis\x20resources\x20are\x20unavailable.\x20WebGPU\x20轴线资源不可用。');return this[_0x2434ad(0x450)];}['getSceneBindGroupLayout'](){const _0x36d34e=_0x59dd37;if(!this[_0x36d34e(0x1af)])throw Error(_0x36d34e(0x361));return this[_0x36d34e(0x1af)];}[_0x59dd37(0x421)](){const _0x1df727=_0x59dd37;if(!this['geometryBindGroupLayout'])throw Error('WebGPU\x20geometry\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20几何绑定布局不可用。');return this[_0x1df727(0x29a)];}[_0x59dd37(0x34a)](){const _0x36e950=_0x59dd37;if(!this['volumeBindGroupLayout'])throw Error(_0x36e950(0x3c6));return this[_0x36e950(0x45a)];}[_0x59dd37(0x1de)](){const _0x1c541d=_0x59dd37;if(!this[_0x1c541d(0x3b4)])throw Error(_0x1c541d(0x342));return this['transferBindGroupLayout'];}['getSliceBindGroupLayout'](){const _0x5e4338=_0x59dd37;if(!this[_0x5e4338(0x2e2)])throw Error(_0x5e4338(0x3e3));return this['sliceBindGroupLayout'];}[_0x59dd37(0x34c)](){const _0x316798=_0x59dd37;if(!this[_0x316798(0x291)])throw Error(_0x316798(0x34d));return this[_0x316798(0x291)];}[_0x59dd37(0x181)](){const _0x1a55ba=_0x59dd37;if(!this[_0x1a55ba(0x343)])throw Error(_0x1a55ba(0x161));return this[_0x1a55ba(0x343)];}};let _0x16dcd5=(_0x288e35,_0x4c2f80)=>_0x4c2f80==='x'?_0x288e35[_0x59dd37(0x280)]:_0x4c2f80==='y'?_0x288e35[_0x59dd37(0x295)]:_0x288e35[_0x59dd37(0x3ba)],_0x4184fc=(_0x4e702b,_0x86399c,_0x39038d)=>{const _0x434e84=_0x59dd37;if(!Number[_0x434e84(0x42c)](_0x39038d))throw Error(_0x434e84(0x434));let _0x410995=_0x16dcd5(_0x4e702b,_0x86399c),_0x180c1a=Math[_0x434e84(0x37d)](_0x410995[_0x434e84(0x1cf)],_0x410995[_0x434e84(0x326)]),_0x5bb426=Math[_0x434e84(0x447)](_0x410995[_0x434e84(0x1cf)],_0x410995[_0x434e84(0x326)]);return Math[_0x434e84(0x37d)](_0x5bb426,Math['max'](_0x180c1a,_0x39038d));},_0x34c68f=_0x5894b2=>_0x5894b2?{..._0x5894b2}:null,_0x57eca6=_0x2cf932=>({..._0x2cf932}),_0x510215=_0x3016f1=>{const _0x467988=_0x59dd37;for(let _0x2d9eb5 of[_0x3016f1[_0x467988(0x280)],_0x3016f1['yAxis'],_0x3016f1[_0x467988(0x3ba)]]){if(!Number[_0x467988(0x42c)](_0x2d9eb5[_0x467988(0x1cf)])||!Number['isFinite'](_0x2d9eb5['end']))throw Error(_0x467988(0x20f));if(!(Number[_0x467988(0x333)](_0x2d9eb5['count'])&&_0x2d9eb5[_0x467988(0x399)]>0x0))throw Error(_0x467988(0x1db));if(_0x2d9eb5[_0x467988(0x399)]>0x1&&_0x2d9eb5[_0x467988(0x1cf)]===_0x2d9eb5['end'])throw Error('多采样点切面轴的起止值不能相等。');}},_0x38cff1=(_0x27fb0e,_0xd31740)=>_0x27fb0e['start']===_0x27fb0e[_0x59dd37(0x326)]?0x0:(_0xd31740-_0x27fb0e[_0x59dd37(0x1cf)])/(_0x27fb0e[_0x59dd37(0x326)]-_0x27fb0e[_0x59dd37(0x1cf)]),_0x112067=(_0x1c19a2,_0x40e417)=>_0x1c19a2['start']+_0x40e417*(_0x1c19a2[_0x59dd37(0x326)]-_0x1c19a2[_0x59dd37(0x1cf)]);var _0x44604f=class{[_0x59dd37(0x173)];[_0x59dd37(0x415)]=new Set();[_0x59dd37(0x16b)];['maxLockedSlices'];[_0x59dd37(0x251)];['nextId']=0x1;[_0x59dd37(0x23c)]=null;[_0x59dd37(0x19d)]=[];[_0x59dd37(0x3ab)]=_0x59dd37(0x165);[_0x59dd37(0x32c)];constructor(_0x331afc,_0x390762={}){const _0x3a9bc4=_0x59dd37;if(_0x510215(_0x331afc),this['axes']={'xAxis':{..._0x331afc['xAxis']},'yAxis':{..._0x331afc[_0x3a9bc4(0x295)]},'zAxis':{..._0x331afc['zAxis']}},this[_0x3a9bc4(0x32c)]=_0x390762[_0x3a9bc4(0x32c)]??0.25,this[_0x3a9bc4(0x251)]=_0x390762['depthMode']??'scene',this[_0x3a9bc4(0x401)]=_0x390762['maxLockedSlices']??0xc,this[_0x3a9bc4(0x16b)]=_0x390762['onLimitReached'],!(this[_0x3a9bc4(0x32c)]>=0x0&&this[_0x3a9bc4(0x32c)]<=0x1))throw Error(_0x3a9bc4(0x424));if(this['depthMode']!=='scene'&&this['depthMode']!==_0x3a9bc4(0x2f8))throw Error('切面深度模式无效\x20/\x20Slice\x20depth\x20mode\x20is\x20invalid');if(!(Number[_0x3a9bc4(0x333)](this[_0x3a9bc4(0x401)])&&this[_0x3a9bc4(0x401)]>0x0))throw Error(_0x3a9bc4(0x3a1));}get[_0x59dd37(0x2a6)](){return _0x34c68f(this['currentPreview']);}get['lockedSlices'](){const _0x573cb5=_0x59dd37;return this['slices'][_0x573cb5(0x139)](_0x57eca6);}get[_0x59dd37(0x3e6)](){const _0x8e9ff3=_0x59dd37;return this[_0x8e9ff3(0x3ab)];}get[_0x59dd37(0x187)](){const _0x1b9f4d=_0x59dd37;return{'preview':this[_0x1b9f4d(0x2a6)],'lockedSlices':this[_0x1b9f4d(0x207)],'toolMode':this[_0x1b9f4d(0x3ab)],'volumeDimFactor':this[_0x1b9f4d(0x32c)]};}['subscribe'](_0x361d8f){const _0x1bd0e0=_0x59dd37;return this[_0x1bd0e0(0x415)][_0x1bd0e0(0x45b)](_0x361d8f),_0x361d8f(this[_0x1bd0e0(0x187)]),()=>this['listeners'][_0x1bd0e0(0x23d)](_0x361d8f);}get[_0x59dd37(0x2a3)](){const _0x4e75ed=_0x59dd37;return{'xAxis':{...this[_0x4e75ed(0x173)][_0x4e75ed(0x280)]},'yAxis':{...this[_0x4e75ed(0x173)][_0x4e75ed(0x295)]},'zAxis':{...this[_0x4e75ed(0x173)]['zAxis']}};}[_0x59dd37(0x1d4)](_0x1db039){const _0x4720f4=_0x59dd37;_0x510215(_0x1db039),this[_0x4720f4(0x173)]={'xAxis':{..._0x1db039['xAxis']},'yAxis':{..._0x1db039[_0x4720f4(0x295)]},'zAxis':{..._0x1db039['zAxis']}},this[_0x4720f4(0x23c)]&&(this[_0x4720f4(0x23c)][_0x4720f4(0x448)]=_0x4184fc(this[_0x4720f4(0x173)],this[_0x4720f4(0x23c)][_0x4720f4(0x250)],this[_0x4720f4(0x23c)][_0x4720f4(0x448)])),this[_0x4720f4(0x19d)]=this[_0x4720f4(0x19d)]['map'](_0x4b1516=>({..._0x4b1516,'position':_0x4184fc(this[_0x4720f4(0x173)],_0x4b1516['axis'],_0x4b1516['position'])})),this[_0x4720f4(0x213)]();}['setToolMode'](_0x29d573){const _0x194471=_0x59dd37;this[_0x194471(0x3ab)]!==_0x29d573&&(this[_0x194471(0x3ab)]=_0x29d573,(_0x29d573===null||_0x29d573!=='auto'&&this[_0x194471(0x23c)]?.[_0x194471(0x250)]!==_0x29d573)&&(this[_0x194471(0x23c)]=null),this['notify']());}[_0x59dd37(0x178)](_0xe1b14,_0x353b13){const _0x35fc10=_0x59dd37;if(this['mode']===null||this[_0x35fc10(0x3ab)]!==_0x35fc10(0x165)&&this[_0x35fc10(0x3ab)]!==_0xe1b14)return;let _0x144142=_0x4184fc(this[_0x35fc10(0x173)],_0xe1b14,_0x353b13);this[_0x35fc10(0x23c)]?.[_0x35fc10(0x250)]===_0xe1b14&&this[_0x35fc10(0x23c)][_0x35fc10(0x448)]===_0x144142||(this[_0x35fc10(0x23c)]={'axis':_0xe1b14,'position':_0x144142},this['notify']());}[_0x59dd37(0x31a)](){const _0x918f40=_0x59dd37;this[_0x918f40(0x23c)]&&(this[_0x918f40(0x23c)]=null,this[_0x918f40(0x213)]());}['lockPreview'](_0x15222c=this[_0x59dd37(0x251)]){const _0x343200=_0x59dd37;return this['currentPreview']?this[_0x343200(0x193)](this['currentPreview'][_0x343200(0x250)],this[_0x343200(0x23c)]['position'],_0x15222c):null;}[_0x59dd37(0x193)](_0x1ed2b2,_0x3a8caf,_0x1978f3=this[_0x59dd37(0x251)]){const _0x561c76=_0x59dd37;if(this[_0x561c76(0x19d)][_0x561c76(0x2ec)]>=this[_0x561c76(0x401)])return this[_0x561c76(0x16b)]?.(this[_0x561c76(0x401)]),null;let _0xa4bf01={'id':'volume-slice-'+this[_0x561c76(0x1ac)],'axis':_0x1ed2b2,'position':_0x4184fc(this[_0x561c76(0x173)],_0x1ed2b2,_0x3a8caf),'depthMode':_0x1978f3,'visible':!0x0};return this[_0x561c76(0x1ac)]+=0x1,this[_0x561c76(0x19d)]=[...this[_0x561c76(0x19d)],_0xa4bf01],this[_0x561c76(0x213)](),_0x57eca6(_0xa4bf01);}[_0x59dd37(0x3c3)](_0x5d536d,_0x3a3e51){const _0x10ea5d=_0x59dd37;let _0x423c48=this[_0x10ea5d(0x19d)][_0x10ea5d(0x1a4)](_0x42164d=>_0x42164d['id']===_0x5d536d);if(_0x423c48<0x0)return;let _0x55d0f3=this[_0x10ea5d(0x19d)][_0x423c48],_0x2ecf45=_0x4184fc(this[_0x10ea5d(0x173)],_0x55d0f3[_0x10ea5d(0x250)],_0x3a3e51);_0x2ecf45!==_0x55d0f3[_0x10ea5d(0x448)]&&(this[_0x10ea5d(0x19d)]=this[_0x10ea5d(0x19d)][_0x10ea5d(0x139)](_0x30f993=>_0x30f993['id']===_0x5d536d?{..._0x30f993,'position':_0x2ecf45}:_0x30f993),this['notify']());}[_0x59dd37(0x1b7)](_0x2d7e60){const _0x229cd2=_0x59dd37;let _0x3b8651=this[_0x229cd2(0x19d)][_0x229cd2(0x16d)](_0x390850=>_0x390850['id']!==_0x2d7e60);_0x3b8651['length']!==this['slices'][_0x229cd2(0x2ec)]&&(this['slices']=_0x3b8651,this[_0x229cd2(0x213)]());}['clearLockedSlices'](){const _0x201cf9=_0x59dd37;this[_0x201cf9(0x19d)]['length']!==0x0&&(this[_0x201cf9(0x19d)]=[],this[_0x201cf9(0x213)]());}[_0x59dd37(0x213)](){const _0x4fc74a=_0x59dd37;let _0x12ced3=this['snapshot'];for(let _0x29ad6a of this[_0x4fc74a(0x415)])_0x29ad6a(_0x12ced3);}};let _0x2ef922=_0x490e03=>_0x490e03==='x'?[[0x0,0x0,0x0],[0x1,0x0,0x0]]:_0x490e03==='y'?[[0x0,0x0,0x0],[0x0,0x1,0x0]]:[[0x0,0x0,0x0],[0x0,0x0,0x1]],_0x20973a=(_0x144398,_0x5f0e53)=>{const _0x2d7861=_0x59dd37;let _0x1011d9=_0x2b96ab(_0x5f0e53[_0x2d7861(0x451)],_0x5f0e53[_0x2d7861(0x235)]),[_0x2a4a18,_0x454f99]=_0x2ef922(_0x144398),_0x62f96b=_0x56b9ae(_0x1011d9,_0x2a4a18,_0x5f0e53[_0x2d7861(0x1e9)],_0x5f0e53[_0x2d7861(0x368)]),_0x57f2df=_0x56b9ae(_0x1011d9,_0x454f99,_0x5f0e53['viewportWidth'],_0x5f0e53[_0x2d7861(0x368)]);return!_0x62f96b||!_0x57f2df?null:{'axis':_0x144398,'startX':_0x62f96b[0x0],'startY':_0x62f96b[0x1],'endX':_0x57f2df[0x0],'endY':_0x57f2df[0x1]};},_0x40cbe9=(_0x4c1628,_0x3b180c,_0x36bd56)=>{const _0x54f060=_0x59dd37;let _0xb95be8=_0x4c1628['endX']-_0x4c1628[_0x54f060(0x23a)],_0x6c1865=_0x4c1628['endY']-_0x4c1628[_0x54f060(0x283)],_0x59a892=_0xb95be8*_0xb95be8+_0x6c1865*_0x6c1865,_0x5b44ba=_0x59a892===0x0?0x0:((_0x3b180c-_0x4c1628[_0x54f060(0x23a)])*_0xb95be8+(_0x36bd56-_0x4c1628[_0x54f060(0x283)])*_0x6c1865)/_0x59a892,_0x175625=Math[_0x54f060(0x37d)](0x1,Math['max'](0x0,_0x5b44ba)),_0x15f241=_0x4c1628[_0x54f060(0x23a)]+_0x175625*_0xb95be8,_0x1a4964=_0x4c1628[_0x54f060(0x283)]+_0x175625*_0x6c1865;return{'axis':_0x4c1628[_0x54f060(0x250)],'distance':Math[_0x54f060(0x3f0)](_0x3b180c-_0x15f241,_0x36bd56-_0x1a4964),'normalizedPosition':_0x175625};},_0x4982a7=(_0x2b6e33,_0x2fbaa2,_0x4ac091)=>{const _0x8a7206=_0x59dd37;let _0x2f0d9b=_0x2fbaa2[_0x8a7206(0x411)]();return[_0x2f0d9b[_0x8a7206(0x31e)]===0x0?0x0:(_0x2b6e33['clientX']-_0x2f0d9b['left'])*_0x4ac091[_0x8a7206(0x1e9)]/_0x2f0d9b[_0x8a7206(0x31e)],_0x2f0d9b[_0x8a7206(0x267)]===0x0?0x0:(_0x2b6e33['clientY']-_0x2f0d9b[_0x8a7206(0x38c)])*_0x4ac091['viewportHeight']/_0x2f0d9b[_0x8a7206(0x267)]];},_0x1b181e=(_0x547173,_0xb4f497,_0x4d2f98)=>{const _0x41346a=_0x59dd37;let _0x5b0ee9=_0x547173['axisDefinitions'];return _0x112067(_0xb4f497==='x'?_0x5b0ee9['xAxis']:_0xb4f497==='y'?_0x5b0ee9[_0x41346a(0x295)]:_0x5b0ee9['zAxis'],_0x4d2f98);};var _0x32ac4f=class{[_0x59dd37(0x32e)];[_0x59dd37(0x1a5)];[_0x59dd37(0x352)];['hitTolerance'];[_0x59dd37(0x376)];[_0x59dd37(0x3ac)];[_0x59dd37(0x232)];[_0x59dd37(0x142)]=null;['previousAxis']=null;[_0x59dd37(0x1d6)]=!0x1;constructor(_0x42974e,_0x792861,_0x52ea2e,_0x1019df={}){const _0x493be1=_0x59dd37;this[_0x493be1(0x32e)]=_0x42974e,this['state']=_0x792861,this[_0x493be1(0x352)]=_0x52ea2e,this[_0x493be1(0x388)]=_0x1019df[_0x493be1(0x25e)]??0xa,this[_0x493be1(0x376)]=_0x1019df[_0x493be1(0x350)]??0x4,this[_0x493be1(0x3ac)]=_0x1019df['onInteractionStart'],this[_0x493be1(0x232)]=_0x1019df['onInteractionEnd'];}[_0x59dd37(0x2ff)](){const _0x35255b=_0x59dd37;this[_0x35255b(0x1d6)]||(this[_0x35255b(0x1d6)]=!0x0,this[_0x35255b(0x32e)][_0x35255b(0x13c)]('pointerdown',this[_0x35255b(0x16c)],!0x0),this['element'][_0x35255b(0x13c)]('pointermove',this[_0x35255b(0x39e)],!0x0),this['element'][_0x35255b(0x13c)](_0x35255b(0x1c7),this[_0x35255b(0x452)],!0x0),window[_0x35255b(0x13c)]('pointermove',this['handleWindowPointerMove'],!0x0),window[_0x35255b(0x13c)]('pointerup',this[_0x35255b(0x41e)],!0x0),window['addEventListener']('pointercancel',this[_0x35255b(0x41e)],!0x0));}['beginLockedSliceDrag'](_0x558206,_0x2b825a){const _0x4226e6=_0x59dd37;let _0x4b5b7e=this[_0x4226e6(0x1a5)][_0x4226e6(0x207)][_0x4226e6(0x3ea)](_0x2b1f2f=>_0x2b1f2f['id']===_0x558206);_0x4b5b7e&&(this[_0x4226e6(0x142)]={'kind':'locked','axis':_0x4b5b7e[_0x4226e6(0x250)],'pointerId':_0x2b825a['pointerId'],'sliceId':_0x558206,'startX':_0x2b825a[_0x4226e6(0x316)],'startY':_0x2b825a[_0x4226e6(0x36a)],'moved':!0x1},this[_0x4226e6(0x3ac)]?.(),_0x2b825a[_0x4226e6(0x229)](),_0x2b825a[_0x4226e6(0x1d9)]());}[_0x59dd37(0x325)](){const _0x53ab23=_0x59dd37;this['initialized']&&(this['initialized']=!0x1,this['element'][_0x53ab23(0x3fc)]('pointerdown',this[_0x53ab23(0x16c)],!0x0),this['element'][_0x53ab23(0x3fc)](_0x53ab23(0x429),this[_0x53ab23(0x39e)],!0x0),this[_0x53ab23(0x32e)][_0x53ab23(0x3fc)](_0x53ab23(0x1c7),this['handlePointerLeave'],!0x0),window['removeEventListener'](_0x53ab23(0x429),this[_0x53ab23(0x1a9)],!0x0),window[_0x53ab23(0x3fc)](_0x53ab23(0x155),this[_0x53ab23(0x41e)],!0x0),window[_0x53ab23(0x3fc)](_0x53ab23(0x3b1),this[_0x53ab23(0x41e)],!0x0),this[_0x53ab23(0x142)]&&this['onInteractionEnd']?.(),this['activePointer']=null,this[_0x53ab23(0x19a)]=null,this[_0x53ab23(0x1a5)][_0x53ab23(0x31a)]());}[_0x59dd37(0x227)](_0x4b6d12,_0x220538){const _0x5c8a10=_0x59dd37;let _0x226762=this[_0x5c8a10(0x352)]();if(!_0x226762)return null;let [_0x490a7c,_0x61e554]=_0x4982a7(_0x4b6d12,this[_0x5c8a10(0x32e)],_0x226762),_0x285797=this[_0x5c8a10(0x1a5)][_0x5c8a10(0x3e6)];if(_0x285797===null)return null;let _0x23e650=(_0x220538?[_0x220538]:_0x285797==='auto'?['x','y','z']:[_0x285797])[_0x5c8a10(0x139)](_0x960679=>_0x20973a(_0x960679,_0x226762))[_0x5c8a10(0x16d)](_0x429401=>_0x429401!==null)[_0x5c8a10(0x139)](_0x1b48e2=>_0x40cbe9(_0x1b48e2,_0x490a7c,_0x61e554));if(_0x23e650[_0x5c8a10(0x2ec)]===0x0)return null;_0x23e650[_0x5c8a10(0x407)]((_0x2d8eee,_0x1e4839)=>_0x2d8eee[_0x5c8a10(0x1c2)]-_0x1e4839[_0x5c8a10(0x1c2)]);let _0x2383fb=_0x23e650[0x0];if(!_0x220538&&this['previousAxis']){let _0x1a57bf=_0x23e650['find'](_0x2c6cf3=>_0x2c6cf3[_0x5c8a10(0x250)]===this['previousAxis']);_0x1a57bf&&_0x1a57bf[_0x5c8a10(0x1c2)]<=_0x2383fb[_0x5c8a10(0x1c2)]+this['axisHysteresis']&&(_0x2383fb=_0x1a57bf);}return!_0x220538&&_0x2383fb['distance']>this[_0x5c8a10(0x388)]?null:_0x2383fb;}[_0x59dd37(0x36c)](_0x5792ef,_0x5e6e2f){const _0x29eebb=_0x59dd37;let _0x1eecc1=_0x1b181e(this[_0x29eebb(0x1a5)],_0x5792ef['axis'],_0x5792ef['normalizedPosition']);_0x5e6e2f?this[_0x29eebb(0x1a5)][_0x29eebb(0x3c3)](_0x5e6e2f,_0x1eecc1):this['state'][_0x29eebb(0x178)](_0x5792ef[_0x29eebb(0x250)],_0x1eecc1),this[_0x29eebb(0x19a)]=_0x5792ef[_0x29eebb(0x250)];}['handlePointerDown']=_0x332a36=>{const _0x4f3042=_0x59dd37;if(_0x332a36['button']!==0x0||this[_0x4f3042(0x142)])return;let _0x34b833=this[_0x4f3042(0x227)](_0x332a36);_0x34b833&&(this[_0x4f3042(0x36c)](_0x34b833),this[_0x4f3042(0x142)]={'kind':_0x4f3042(0x2a6),'axis':_0x34b833['axis'],'pointerId':_0x332a36[_0x4f3042(0x3f3)],'startX':_0x332a36[_0x4f3042(0x316)],'startY':_0x332a36[_0x4f3042(0x36a)],'moved':!0x1},this[_0x4f3042(0x3ac)]?.(),this[_0x4f3042(0x32e)][_0x4f3042(0x224)]?.(_0x332a36['pointerId']),_0x332a36[_0x4f3042(0x229)](),_0x332a36[_0x4f3042(0x1d9)]());};[_0x59dd37(0x39e)]=_0x170b6d=>{const _0x2b2b5d=_0x59dd37;if(this[_0x2b2b5d(0x142)])return;let _0x3a7141=this[_0x2b2b5d(0x227)](_0x170b6d);if(!_0x3a7141){this['previousAxis']=null,this[_0x2b2b5d(0x1a5)]['clearPreview']();return;}this[_0x2b2b5d(0x36c)](_0x3a7141);};[_0x59dd37(0x1a9)]=_0xe12665=>{const _0x4a6687=_0x59dd37;let _0x34dc7a=this[_0x4a6687(0x142)];if(!_0x34dc7a||_0x34dc7a['pointerId']!==_0xe12665[_0x4a6687(0x3f3)])return;let _0x36fc16=this[_0x4a6687(0x227)](_0xe12665,_0x34dc7a['axis']);_0x36fc16&&(Math[_0x4a6687(0x3f0)](_0xe12665[_0x4a6687(0x316)]-_0x34dc7a[_0x4a6687(0x23a)],_0xe12665[_0x4a6687(0x36a)]-_0x34dc7a[_0x4a6687(0x283)])>0x4&&(_0x34dc7a[_0x4a6687(0x365)]=!0x0),this[_0x4a6687(0x36c)](_0x36fc16,_0x34dc7a[_0x4a6687(0x24a)]),_0xe12665[_0x4a6687(0x229)](),_0xe12665[_0x4a6687(0x1d9)]());};[_0x59dd37(0x41e)]=_0x242de0=>{const _0x4e68aa=_0x59dd37;let _0x2f8a99=this[_0x4e68aa(0x142)];!_0x2f8a99||_0x2f8a99[_0x4e68aa(0x3f3)]!==_0x242de0['pointerId']||(_0x2f8a99['kind']===_0x4e68aa(0x2a6)&&!_0x2f8a99[_0x4e68aa(0x365)]&&this[_0x4e68aa(0x1a5)][_0x4e68aa(0x2b2)](),this[_0x4e68aa(0x32e)][_0x4e68aa(0x255)]?.(_0x242de0[_0x4e68aa(0x3f3)])&&this[_0x4e68aa(0x32e)][_0x4e68aa(0x228)](_0x242de0[_0x4e68aa(0x3f3)]),this[_0x4e68aa(0x142)]=null,this[_0x4e68aa(0x232)]?.(),_0x242de0[_0x4e68aa(0x229)](),_0x242de0['stopPropagation']());};[_0x59dd37(0x452)]=()=>{const _0x2fa60e=_0x59dd37;this[_0x2fa60e(0x142)]||this[_0x2fa60e(0x1a5)]['clearPreview']();};};let _0x207228=_0x41c36e=>_0x41c36e[_0x59dd37(0x183)](),_0x9d8d53=(_0x528eb5,_0x1b09a0)=>_0x207228(_0x528eb5)+'\x20'+Number(_0x1b09a0['toFixed'](0x4)),_0x5d29c4=(_0x204d3f,_0x21c191)=>{const _0x102bfa=_0x59dd37;let _0x51658c=_0x204d3f[_0x102bfa(0x2a3)];return _0x21c191==='x'?_0x51658c[_0x102bfa(0x280)]:_0x21c191==='y'?_0x51658c[_0x102bfa(0x295)]:_0x51658c[_0x102bfa(0x3ba)];},_0x4b81cc=(_0x1eea8c,_0x20ba26)=>{const _0x368d8c=_0x59dd37;let _0x4f6a64=_0x38cff1(_0x5d29c4(_0x1eea8c,_0x20ba26[_0x368d8c(0x250)]),_0x20ba26['position']);return _0x20ba26[_0x368d8c(0x250)]==='x'?[_0x4f6a64,0x0,0x0]:_0x20ba26[_0x368d8c(0x250)]==='y'?[0x0,_0x4f6a64,0x0]:[0x0,0x0,_0x4f6a64];},_0x44d845=_0x277538=>{const _0x37d1ca=_0x59dd37;_0x277538[_0x37d1ca(0x2f4)][_0x37d1ca(0x448)]=_0x37d1ca(0x43d),_0x277538[_0x37d1ca(0x2f4)]['zIndex']='1',_0x277538[_0x37d1ca(0x2f4)][_0x37d1ca(0x2fa)]=_0x37d1ca(0x33d),_0x277538[_0x37d1ca(0x2f4)][_0x37d1ca(0x3f2)]='center',_0x277538[_0x37d1ca(0x2f4)][_0x37d1ca(0x33c)]='4px',_0x277538[_0x37d1ca(0x2f4)][_0x37d1ca(0x3df)]='3px\x206px',_0x277538['style'][_0x37d1ca(0x30d)]='1px\x20solid\x20rgb(255\x20255\x20255\x20/\x2065%)',_0x277538[_0x37d1ca(0x2f4)][_0x37d1ca(0x1f7)]=_0x37d1ca(0x1d0),_0x277538[_0x37d1ca(0x2f4)][_0x37d1ca(0x381)]=_0x37d1ca(0x264),_0x277538[_0x37d1ca(0x2f4)][_0x37d1ca(0x2ab)]=_0x37d1ca(0x2ad),_0x277538['style']['font']=_0x37d1ca(0x253),_0x277538[_0x37d1ca(0x2f4)]['whiteSpace']=_0x37d1ca(0x288),_0x277538['style'][_0x37d1ca(0x331)]=_0x37d1ca(0x27d),_0x277538['style']['userSelect']=_0x37d1ca(0x2df),_0x277538['style']['touchAction']=_0x37d1ca(0x2df);},_0x3c608f=()=>{const _0x456a87=_0x59dd37;let _0x3012db=document[_0x456a87(0x323)](_0x456a87(0x35f));return _0x3012db['type']=_0x456a87(0x35f),_0x3012db['textContent']='×',_0x3012db[_0x456a87(0x410)](_0x456a87(0x1e0),_0x456a87(0x1b6)),_0x3012db[_0x456a87(0x2f4)][_0x456a87(0x3df)]=_0x456a87(0x297),_0x3012db[_0x456a87(0x2f4)]['border']='0',_0x3012db[_0x456a87(0x2f4)][_0x456a87(0x381)]=_0x456a87(0x2d1),_0x3012db['style'][_0x456a87(0x2ab)]='transparent',_0x3012db[_0x456a87(0x2f4)][_0x456a87(0x2dd)]=_0x456a87(0x420),_0x3012db;};var _0x1437ae=class{[_0x59dd37(0x28e)];[_0x59dd37(0x1a5)];[_0x59dd37(0x352)];[_0x59dd37(0x246)];[_0x59dd37(0x1c0)];[_0x59dd37(0x2d5)]=new Map();['previousContainerPosition'];['unsubscribe'];[_0x59dd37(0x1b0)]=null;constructor(_0x2ad11c,_0x4eff72,_0x2ebb4e,_0x4298f5={}){const _0x1741ee=_0x59dd37;this[_0x1741ee(0x28e)]=_0x2ad11c,this[_0x1741ee(0x1a5)]=_0x4eff72,this['getFrame']=_0x2ebb4e,this['interactionController']=_0x4298f5['interactionController'],this['formatPosition']=_0x4298f5[_0x1741ee(0x1c0)]??_0x9d8d53,this[_0x1741ee(0x3be)]=_0x2ad11c['style'][_0x1741ee(0x448)],getComputedStyle(_0x2ad11c)['position']===_0x1741ee(0x1b9)&&(_0x2ad11c[_0x1741ee(0x2f4)][_0x1741ee(0x448)]=_0x1741ee(0x13b)),this[_0x1741ee(0x200)]=_0x4eff72[_0x1741ee(0x38b)](()=>this[_0x1741ee(0x2c7)]());}[_0x59dd37(0x2c7)](){const _0x45a92f=_0x59dd37;let _0x36634a=this['state']['snapshot'];this[_0x45a92f(0x44c)](_0x36634a['preview']),this[_0x45a92f(0x3de)](_0x36634a[_0x45a92f(0x207)]);let _0x1f0e71=this[_0x45a92f(0x352)]();if(!_0x1f0e71){this['hideAllMarkers']();return;}_0x36634a[_0x45a92f(0x2a6)]&&this['previewMarker']&&this[_0x45a92f(0x2e8)](this[_0x45a92f(0x1b0)],_0x36634a[_0x45a92f(0x2a6)],_0x1f0e71);for(let _0x1d827a of _0x36634a[_0x45a92f(0x207)]){let _0x2941de=this[_0x45a92f(0x2d5)][_0x45a92f(0x1a0)](_0x1d827a['id']);_0x2941de&&this[_0x45a92f(0x2e8)](_0x2941de,_0x1d827a,_0x1f0e71);}}[_0x59dd37(0x325)](){const _0x4e456d=_0x59dd37;this[_0x4e456d(0x200)](),this[_0x4e456d(0x1b0)]?.[_0x4e456d(0x2db)](),this[_0x4e456d(0x1b0)]=null;for(let _0x38e12e of this[_0x4e456d(0x2d5)][_0x4e456d(0x2d2)]())_0x38e12e[_0x4e456d(0x2db)]();this[_0x4e456d(0x2d5)]['clear'](),this[_0x4e456d(0x28e)][_0x4e456d(0x2f4)][_0x4e456d(0x448)]=this['previousContainerPosition'];}['syncPreview'](_0x418de6){const _0x1310ca=_0x59dd37;if(!_0x418de6){this[_0x1310ca(0x1b0)]?.[_0x1310ca(0x2db)](),this['previewMarker']=null;return;}this[_0x1310ca(0x1b0)]||(this[_0x1310ca(0x1b0)]=document['createElement'](_0x1310ca(0x32b)),_0x44d845(this[_0x1310ca(0x1b0)]),this[_0x1310ca(0x1b0)][_0x1310ca(0x2f4)][_0x1310ca(0x39b)]=_0x1310ca(0x2df),this[_0x1310ca(0x1b0)][_0x1310ca(0x2f4)][_0x1310ca(0x405)]=_0x1310ca(0x233),this[_0x1310ca(0x28e)][_0x1310ca(0x2d3)](this[_0x1310ca(0x1b0)])),this[_0x1310ca(0x1b0)][_0x1310ca(0x42f)]=this[_0x1310ca(0x1c0)](_0x418de6[_0x1310ca(0x250)],_0x418de6[_0x1310ca(0x448)]);}[_0x59dd37(0x3de)](_0x15ab96){const _0x34a475=_0x59dd37;let _0x490698=new Set(_0x15ab96[_0x34a475(0x139)](_0x5362bc=>_0x5362bc['id']));for(let [_0x50d255,_0xa00b6f]of this[_0x34a475(0x2d5)])_0x490698[_0x34a475(0x290)](_0x50d255)||(_0xa00b6f['remove'](),this['markers']['delete'](_0x50d255));for(let _0x4d0d1a of _0x15ab96){let _0x48ec39=this[_0x34a475(0x2d5)][_0x34a475(0x1a0)](_0x4d0d1a['id']);_0x48ec39||(_0x48ec39=this['createLockedMarker'](_0x4d0d1a['id']),this[_0x34a475(0x2d5)][_0x34a475(0x1ca)](_0x4d0d1a['id'],_0x48ec39),this[_0x34a475(0x28e)][_0x34a475(0x2d3)](_0x48ec39));let _0x1d57da=_0x48ec39[_0x34a475(0x458)];_0x1d57da&&(_0x1d57da['textContent']=this['formatPosition'](_0x4d0d1a[_0x34a475(0x250)],_0x4d0d1a[_0x34a475(0x448)]));}}[_0x59dd37(0x1b8)](_0x245869){const _0x2707f6=_0x59dd37;let _0x516543=document[_0x2707f6(0x323)](_0x2707f6(0x32b));_0x44d845(_0x516543),_0x516543[_0x2707f6(0x2f4)]['cursor']=_0x2707f6(0x2be),_0x516543['append'](document[_0x2707f6(0x15c)](''));let _0x24604c=_0x3c608f();return _0x24604c[_0x2707f6(0x13c)](_0x2707f6(0x380),_0x59a916=>_0x59a916[_0x2707f6(0x1d9)]()),_0x24604c[_0x2707f6(0x13c)](_0x2707f6(0x1a6),_0x3c172d=>{const _0x3c9c78=_0x2707f6;_0x3c172d['stopPropagation'](),this[_0x3c9c78(0x1a5)][_0x3c9c78(0x1b7)](_0x245869);}),_0x516543[_0x2707f6(0x13c)](_0x2707f6(0x380),_0x4480ea=>this['interactionController']?.[_0x2707f6(0x1a8)](_0x245869,_0x4480ea)),_0x516543[_0x2707f6(0x2d3)](_0x24604c),_0x516543;}[_0x59dd37(0x2e8)](_0x4be739,_0x10e846,_0x10615a){const _0x5d919b=_0x59dd37;let _0x370f18=_0x56b9ae(_0x2b96ab(_0x10615a[_0x5d919b(0x451)],_0x10615a[_0x5d919b(0x235)]),_0x4b81cc(this[_0x5d919b(0x1a5)],_0x10e846),_0x10615a[_0x5d919b(0x1e9)],_0x10615a[_0x5d919b(0x368)]);if(!_0x370f18||_0x370f18[0x2]<0x0||_0x370f18[0x2]>0x1){_0x4be739[_0x5d919b(0x2f4)][_0x5d919b(0x2fa)]=_0x5d919b(0x2df);return;}_0x4be739[_0x5d919b(0x2f4)][_0x5d919b(0x2fa)]=_0x5d919b(0x33d),_0x4be739[_0x5d919b(0x2f4)][_0x5d919b(0x373)]=_0x370f18[0x0]+'px',_0x4be739[_0x5d919b(0x2f4)]['top']=_0x370f18[0x1]+'px';}[_0x59dd37(0x358)](){const _0x2b355c=_0x59dd37;this[_0x2b355c(0x1b0)]&&(this[_0x2b355c(0x1b0)]['style'][_0x2b355c(0x2fa)]=_0x2b355c(0x2df));for(let _0x461e96 of this[_0x2b355c(0x2d5)]['values']())_0x461e96[_0x2b355c(0x2f4)]['display']=_0x2b355c(0x2df);}};let _0x438532=(_0x367d78,_0x3ed696)=>Math[_0x59dd37(0x37d)](_0x3ed696-0x1,Math[_0x59dd37(0x447)](0x0,_0x367d78)),_0x25f863=(_0x58efd2,_0x481d00,_0x15137a,_0x27aed3)=>{const _0x39be0f=_0x59dd37;_0x4e9beb(_0x58efd2,_0x27aed3,_0x15137a[_0x39be0f(0x184)]);let _0x22964f=_0x481d00[_0x39be0f(0x31e)]+_0x481d00[_0x39be0f(0x3e8)]*0x2,_0x16c873=_0x481d00['height']+_0x481d00[_0x39be0f(0x3e8)]*0x2,_0x661bbd=_0x481d00[_0x39be0f(0x43f)]+_0x481d00[_0x39be0f(0x3e8)]*0x2,_0x575164=new Float32Array(_0x22964f*_0x16c873*_0x661bbd);for(let _0x416f7d=0x0;_0x416f7d<_0x661bbd;_0x416f7d+=0x1){let _0x5d28aa=_0x438532(_0x15137a[_0x39be0f(0x212)][_0x39be0f(0x1a1)]+_0x416f7d-_0x481d00[_0x39be0f(0x3e8)],_0x58efd2[_0x39be0f(0x3ba)][_0x39be0f(0x399)])-_0x27aed3[_0x39be0f(0x1e3)]['sourceYStart'];for(let _0x3b8e02=0x0;_0x3b8e02<_0x16c873;_0x3b8e02+=0x1){let _0x2a18f3=_0x438532(_0x15137a[_0x39be0f(0x212)][_0x39be0f(0x1b4)]+_0x3b8e02-_0x481d00['halo'],_0x58efd2[_0x39be0f(0x295)][_0x39be0f(0x399)])-_0x27aed3['range'][_0x39be0f(0x1b4)];for(let _0x527baa=0x0;_0x527baa<_0x22964f;_0x527baa+=0x1){let _0x53d043=_0x438532(_0x15137a['coreRange'][_0x39be0f(0x2ae)]+_0x527baa-_0x481d00[_0x39be0f(0x3e8)],_0x58efd2[_0x39be0f(0x280)][_0x39be0f(0x399)])-_0x27aed3[_0x39be0f(0x1e3)][_0x39be0f(0x2ae)];_0x575164[(_0x416f7d*_0x16c873+_0x3b8e02)*_0x22964f+_0x527baa]=_0x27aed3[_0x39be0f(0x2d2)][(_0x5d28aa*_0x27aed3[_0x39be0f(0x267)]+_0x2a18f3)*_0x27aed3[_0x39be0f(0x31e)]+_0x53d043];}}}return _0x575164;},_0x1f7b45=_0x392cbe=>{const _0x5bc7c6=_0x59dd37;if(_0x392cbe['length']===0x0)throw Error('colorStops\x20不能为空');return _0x392cbe['map']((_0x54c4c2,_0x2e558d)=>{const _0x2f9f14=_0x44e0;if(Number[_0x2f9f14(0x3e2)](_0x54c4c2['min'])||Number[_0x2f9f14(0x3e2)](_0x54c4c2['max']))throw TypeError('第'+(_0x2e558d+0x1)+'个色标范围不能是NaN');if(_0x54c4c2[_0x2f9f14(0x37d)]>=_0x54c4c2[_0x2f9f14(0x447)])throw Error('第'+(_0x2e558d+0x1)+_0x2f9f14(0x367));return{'min':_0x54c4c2[_0x2f9f14(0x37d)],'max':_0x54c4c2[_0x2f9f14(0x447)],'color':_0x25e08f(_0x54c4c2[_0x2f9f14(0x381)])};})[_0x5bc7c6(0x407)]((_0x4460b8,_0x4abd0e)=>_0x4460b8[_0x5bc7c6(0x37d)]-_0x4abd0e['min']);},_0x25e08f=_0x55dd5d=>{const _0x522fc8=_0x59dd37;let _0x8dccbd=_0x55dd5d['trim']()['toLowerCase']();if(_0x8dccbd[_0x522fc8(0x3b2)]('#'))return _0x6fc67(_0x8dccbd);if(_0x8dccbd[_0x522fc8(0x3b2)](_0x522fc8(0x3a0)))return _0x23c8b5(_0x8dccbd,!0x0);if(_0x8dccbd['startsWith']('rgb('))return _0x23c8b5(_0x8dccbd,!0x1);throw Error(_0x522fc8(0x2f5)+_0x55dd5d);},_0x6fc67=_0x4fd80a=>{const _0x1574a8=_0x59dd37;if(_0x4fd80a[_0x1574a8(0x2ec)]===0x4)return _0x19ee3f(Number['parseInt'](''+_0x4fd80a[0x1]+_0x4fd80a[0x1],0x10),Number[_0x1574a8(0x19e)](''+_0x4fd80a[0x2]+_0x4fd80a[0x2],0x10),Number['parseInt'](''+_0x4fd80a[0x3]+_0x4fd80a[0x3],0x10),0x1);if(_0x4fd80a[_0x1574a8(0x2ec)]===0x7)return _0x19ee3f(Number[_0x1574a8(0x19e)](_0x4fd80a['slice'](0x1,0x3),0x10),Number[_0x1574a8(0x19e)](_0x4fd80a[_0x1574a8(0x244)](0x3,0x5),0x10),Number[_0x1574a8(0x19e)](_0x4fd80a['slice'](0x5,0x7),0x10),0x1);throw Error(_0x1574a8(0x2d8)+_0x4fd80a);},_0x23c8b5=(_0x293377,_0x407887)=>{const _0x33a409=_0x59dd37;let _0x1fa811=_0x293377[_0x33a409(0x2b8)](/^rgba?\(([^)]+)\)$/);if(!_0x1fa811)throw Error(_0x33a409(0x153)+_0x293377);let _0x238571=_0x1fa811[0x1]['split'](',')[_0x33a409(0x139)](_0x222183=>_0x222183[_0x33a409(0x138)]()),_0x10b9c5=_0x407887?0x4:0x3;if(_0x238571['length']!==_0x10b9c5)throw Error(_0x33a409(0x437)+_0x293377);return _0x19ee3f(Number(_0x238571[0x0]),Number(_0x238571[0x1]),Number(_0x238571[0x2]),_0x407887?Number(_0x238571[0x3]):0x1);},_0x19ee3f=(_0x2be9d7,_0x483fcb,_0x1cdea8,_0x15024c)=>{const _0x4dfe7e=_0x59dd37;if(!_0x298dec(_0x2be9d7)||!_0x298dec(_0x483fcb)||!_0x298dec(_0x1cdea8))throw Error('RGB\x20颜色通道必须在\x200\x20~\x20255\x20之间');if(!Number[_0x4dfe7e(0x42c)](_0x15024c)||_0x15024c<0x0||_0x15024c>0x1)throw Error(_0x4dfe7e(0x336));return[_0x2be9d7/0xff,_0x483fcb/0xff,_0x1cdea8/0xff,_0x15024c];},_0x298dec=_0x485a03=>Number[_0x59dd37(0x42c)](_0x485a03)&&_0x485a03>=0x0&&_0x485a03<=0xff,_0x415e1b=_0x127c99=>{const _0x161315=_0x59dd37;if(_0x127c99[_0x161315(0x2ec)]===0x0)throw Error(_0x161315(0x150));let _0x31bf28=-0x1/0x0;for(let _0x1e84bf of _0x127c99){if(!Number[_0x161315(0x42c)](_0x1e84bf[_0x161315(0x386)])||_0x1e84bf[_0x161315(0x386)]<=_0x31bf28)throw Error(_0x161315(0x42a));if(!Number['isFinite'](_0x1e84bf[_0x161315(0x405)])||_0x1e84bf[_0x161315(0x405)]<0x0||_0x1e84bf[_0x161315(0x405)]>0x1)throw Error('Volume\x20opacity\x20must\x20be\x20within\x20[0,\x201].\x20体积透明度必须位于\x20[0,\x201]。');_0x31bf28=_0x1e84bf[_0x161315(0x386)];}},_0x254fda=(_0x1a323d,_0x17928e)=>{const _0x5e2aa8=_0x59dd37;if(_0x1a323d<=_0x17928e[0x0])return[0x0,0x0,0x0];for(let _0x4b7ba7=0x1;_0x4b7ba7<_0x17928e[_0x5e2aa8(0x2ec)];_0x4b7ba7+=0x1)if(_0x1a323d<=_0x17928e[_0x4b7ba7]){let _0x2ac231=_0x17928e[_0x4b7ba7]-_0x17928e[_0x4b7ba7-0x1];return[_0x4b7ba7-0x1,_0x4b7ba7,_0x2ac231===0x0?0x0:Math[_0x5e2aa8(0x37d)](0x1,Math['max'](0x0,(_0x1a323d-_0x17928e[_0x4b7ba7-0x1])/_0x2ac231))];}let _0x3baf4b=_0x17928e[_0x5e2aa8(0x2ec)]-0x1;return[_0x3baf4b,_0x3baf4b,0x0];},_0x2dcf50=(_0x3965f3,_0x3c85c6)=>{const _0x517b43=_0x59dd37;_0x415e1b(_0x3c85c6);let _0x152380=_0x1f7b45([..._0x3965f3]);return{'colorStops':_0x152380[_0x517b43(0x271)]((_0x101b79,_0x57a068)=>{const _0xbad73a=_0x517b43;let _0x59257e=_0x152380[Math[_0xbad73a(0x37d)](_0x57a068+0x1,_0x152380[_0xbad73a(0x2ec)]-0x1)]['color'];return[{'value':_0x101b79[_0xbad73a(0x37d)],'color':_0x101b79[_0xbad73a(0x381)]},{'value':_0x101b79['max'],'color':_0x59257e}];}),'opacityStops':_0x3c85c6[_0x517b43(0x139)](_0x2cc159=>({..._0x2cc159}))};},_0x5b47cd=(_0x14b2cf,_0x23b25a,_0x43ca3b,_0x6e6d6)=>{const _0xd47753=_0x59dd37;if(!Number['isFinite'](_0x14b2cf))return[0x0,0x0,0x0,0x0];let [_0x1cb2a2,_0xf3690e,_0x1fff8c]=_0x254fda(_0x14b2cf,_0x23b25a[_0xd47753(0x139)](_0x41d0dd=>_0x41d0dd['value'])),_0x3b62e6=_0x23b25a[_0x1cb2a2],_0x543f04=_0x23b25a[_0xf3690e],_0x28ac33=_0x6e6d6===_0xd47753(0x306)?0x0:_0x1fff8c;return[_0x3b62e6['color'][0x0]+(_0x543f04[_0xd47753(0x381)][0x0]-_0x3b62e6[_0xd47753(0x381)][0x0])*_0x28ac33,_0x3b62e6[_0xd47753(0x381)][0x1]+(_0x543f04[_0xd47753(0x381)][0x1]-_0x3b62e6[_0xd47753(0x381)][0x1])*_0x28ac33,_0x3b62e6[_0xd47753(0x381)][0x2]+(_0x543f04[_0xd47753(0x381)][0x2]-_0x3b62e6[_0xd47753(0x381)][0x2])*_0x28ac33,(_0x3b62e6['color'][0x3]+(_0x543f04[_0xd47753(0x381)][0x3]-_0x3b62e6[_0xd47753(0x381)][0x3])*_0x28ac33)*_0x43ca3b];},_0x21876c=(_0x3d931b,_0x535656,_0x5b0104)=>{const _0x4fcedb=_0x59dd37;if(!Number[_0x4fcedb(0x42c)](_0x3d931b))return 0x0;let [_0xe94424,_0x3148c5,_0x192ee9]=_0x254fda(_0x3d931b,_0x535656[_0x4fcedb(0x139)](_0x4a2ac7=>_0x4a2ac7[_0x4fcedb(0x386)])),_0x198876=_0x5b0104===_0x4fcedb(0x306)?0x0:_0x192ee9;return _0x535656[_0xe94424][_0x4fcedb(0x405)]+(_0x535656[_0x3148c5][_0x4fcedb(0x405)]-_0x535656[_0xe94424][_0x4fcedb(0x405)])*_0x198876;},_0x2b6458={'position':[1.4,1.2,2.1],'target':[0.5,0.5,0.5],'up':[0x0,0x1,0x0],'projection':{'type':_0x59dd37(0x41a),'fovYDegrees':0x2d,'near':0.01,'far':0x64}},_0xd3583c=[0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1],_0x295475=_0x2ef0f0=>Math['min'](0x1,Math[_0x59dd37(0x447)](0x0,_0x2ef0f0)),_0x2ca023=_0x57f027=>_0x57f027===_0x59dd37(0x226)?0.012:_0x57f027===_0x59dd37(0x34e)?0.0025:_0x57f027==='balanced'?0.005:0.006,_0x329e3f=_0x2cdebf=>_0x2cdebf===_0x59dd37(0x226)?0x8:_0x2cdebf===_0x59dd37(0x34e)?0x2:0x4,_0x2c9de5=(_0x2b8c10,_0x921b0)=>_0x921b0>0x18?_0x2b8c10==='quality'?_0x59dd37(0x449):_0x59dd37(0x226):_0x921b0<0xe?_0x2b8c10===_0x59dd37(0x226)?_0x59dd37(0x449):'quality':_0x2b8c10,_0x42f633=(_0x3835b1,_0x503c71)=>{const _0x295ace=_0x59dd37;if(!Number['isFinite'](_0x3835b1)||_0x3835b1<=0x0)throw Error(_0x503c71+_0x295ace(0x2f1)+_0x503c71+'\x20必须是大于\x200\x20的有限数。');return _0x3835b1;},_0x3c1e06=(_0x4e2e7c,_0x2b4a80)=>{const _0x25256a=_0x59dd37;if(!_0x2b4a80)return{'minimum':[0x0,0x0,0x0],'maximum':[0x1,0x1,0x1]};let _0x65b273=_0x295475(_0x38cff1(_0x4e2e7c[_0x25256a(0x2b0)]['xAxis'],_0x2b4a80[_0x25256a(0x154)])),_0x448cee=_0x295475(_0x38cff1(_0x4e2e7c[_0x25256a(0x2b0)][_0x25256a(0x280)],_0x2b4a80[_0x25256a(0x315)])),_0x12930e=_0x295475(_0x38cff1(_0x4e2e7c[_0x25256a(0x2b0)][_0x25256a(0x295)],_0x2b4a80[_0x25256a(0x202)])),_0x355ef7=_0x295475(_0x38cff1(_0x4e2e7c[_0x25256a(0x2b0)][_0x25256a(0x295)],_0x2b4a80[_0x25256a(0x151)])),_0x3998a0=_0x295475(_0x38cff1(_0x4e2e7c[_0x25256a(0x2b0)][_0x25256a(0x3ba)],_0x2b4a80[_0x25256a(0x152)])),_0x526f04=_0x295475(_0x38cff1(_0x4e2e7c[_0x25256a(0x2b0)][_0x25256a(0x3ba)],_0x2b4a80[_0x25256a(0x234)]));return{'minimum':[Math[_0x25256a(0x37d)](_0x65b273,_0x448cee),Math['min'](_0x12930e,_0x355ef7),Math[_0x25256a(0x37d)](_0x3998a0,_0x526f04)],'maximum':[Math[_0x25256a(0x447)](_0x65b273,_0x448cee),Math[_0x25256a(0x447)](_0x12930e,_0x355ef7),Math[_0x25256a(0x447)](_0x3998a0,_0x526f04)]};},_0x16ef13=()=>({'id':_0x59dd37(0x40b),'topology':_0x59dd37(0x198),'depthMode':_0x59dd37(0x2f8),'vertices':new Float32Array([0x0,0x0,0x0,0x1,0.2,0.2,0x1,0x1,0x0,0x0,0x1,0.2,0.2,0x1,0x0,0x0,0x0,0.2,0x1,0.2,0x1,0x0,0x1,0x0,0.2,0x1,0.2,0x1,0x0,0x0,0x0,0.2,0.5,0x1,0x1,0x0,0x0,0x1,0.2,0.5,0x1,0x1])}),_0x1295d8=()=>{const _0x2a7380=_0x59dd37;let _0x2e13c1=[0.1,0.53,0.56,0.62],_0xe7c471=[[0x0,0x0,0x0],[0x1,0x0,0x0],[0x0,0x1,0x0],[0x1,0x1,0x0],[0x0,0x0,0x1],[0x1,0x0,0x1],[0x0,0x1,0x1],[0x1,0x1,0x1]],_0x481844=[[0x0,0x1],[0x0,0x2],[0x1,0x3],[0x2,0x3],[0x4,0x5],[0x4,0x6],[0x5,0x7],[0x6,0x7],[0x0,0x4],[0x1,0x5],[0x2,0x6],[0x3,0x7]],_0x17bca8=new Float32Array(_0x481844[_0x2a7380(0x2ec)]*0x2*0x7),_0x184e41=0x0;for(let _0x5bf359 of _0x481844)for(let _0x17a217 of _0x5bf359)_0x17bca8[_0x2a7380(0x1ca)]([..._0xe7c471[_0x17a217],..._0x2e13c1],_0x184e41),_0x184e41+=0x7;return{'id':_0x2a7380(0x33f),'topology':_0x2a7380(0x198),'depthMode':'scene','vertices':_0x17bca8};},_0x33d55a=(_0x1138f9,_0xd6406d,_0x3a1e28,_0x27505b)=>{const _0x737c65=_0x59dd37;let _0x44c09a=new Float32Array(_0x1138f9[_0x737c65(0x3cb)][_0x737c65(0x2ec)]*0x7);for(let _0x400ee1=0x0;_0x400ee1<_0x1138f9['indices'][_0x737c65(0x2ec)];_0x400ee1+=0x1){let _0x8202c5=_0x1138f9[_0x737c65(0x3cb)][_0x400ee1],_0x1fc6cc=_0x8202c5*0x3,_0x460f20=_0x21876c(_0x1138f9[_0x737c65(0x2d2)][_0x8202c5],_0x3a1e28,_0x27505b),_0x44b472=_0x5b47cd(_0x1138f9[_0x737c65(0x2d2)][_0x8202c5],_0xd6406d,_0x1138f9[_0x737c65(0x405)]*_0x460f20,_0x27505b);_0x44c09a[_0x737c65(0x1ca)]([_0x1138f9[_0x737c65(0x169)][_0x1fc6cc],_0x1138f9['positions'][_0x1fc6cc+0x1],_0x1138f9['positions'][_0x1fc6cc+0x2],_0x44b472[0x0]*_0x44b472[0x3],_0x44b472[0x1]*_0x44b472[0x3],_0x44b472[0x2]*_0x44b472[0x3],_0x44b472[0x3]],_0x400ee1*0x7);}return{'id':_0x1138f9['id'],'topology':_0x737c65(0x313),'depthMode':_0x1138f9['depthMode'],'vertices':_0x44c09a};},_0x430337=(_0x3fa247,_0x2ebad6,_0x1003b4)=>{const _0x3f2943=_0x59dd37;let _0xfde4d9=(_0x3fa247[_0x3f2943(0x145)]['x']+0.5)/_0x2ebad6[_0x3f2943(0x299)],_0x10e5d1=(_0x3fa247[_0x3f2943(0x145)]['y']+0.5)/_0x2ebad6['countY'],_0x24447b=(_0x3fa247[_0x3f2943(0x145)]['z']+0.5)/_0x2ebad6[_0x3f2943(0x445)];return Math[_0x3f2943(0x3f0)](_0xfde4d9-_0x1003b4[_0x3f2943(0x448)][0x0],_0x10e5d1-_0x1003b4[_0x3f2943(0x448)][0x1],_0x24447b-_0x1003b4[_0x3f2943(0x448)][0x2]);},_0x4c5988=(_0x25ee72,_0x2187e1)=>(_0x25ee72[_0x59dd37(0x145)]['z']*_0x2187e1['countY']+_0x25ee72[_0x59dd37(0x145)]['y'])*_0x2187e1[_0x59dd37(0x299)]+_0x25ee72[_0x59dd37(0x145)]['x'],_0x53de05=(_0x5596db,_0x547e1a,_0xef739d,_0x13361a)=>{const _0xfb4c18=_0x59dd37;let _0x1bb5f2=_0xef739d==='x'?{'start':_0x5596db[_0xfb4c18(0x212)][_0xfb4c18(0x2ae)],'count':_0x5596db[_0xfb4c18(0x212)][_0xfb4c18(0x35b)],'size':_0x547e1a[_0xfb4c18(0x2b0)][_0xfb4c18(0x280)][_0xfb4c18(0x399)]}:_0xef739d==='y'?{'start':_0x5596db[_0xfb4c18(0x212)][_0xfb4c18(0x1b4)],'count':_0x5596db[_0xfb4c18(0x212)][_0xfb4c18(0x3c0)],'size':_0x547e1a[_0xfb4c18(0x2b0)]['yAxis']['count']}:{'start':_0x5596db[_0xfb4c18(0x212)][_0xfb4c18(0x1a1)],'count':_0x5596db[_0xfb4c18(0x212)]['sourceYCount'],'size':_0x547e1a[_0xfb4c18(0x2b0)]['zAxis'][_0xfb4c18(0x399)]};return _0x13361a>=_0x1bb5f2[_0xfb4c18(0x1cf)]/_0x1bb5f2[_0xfb4c18(0x406)]&&_0x13361a<=(_0x1bb5f2[_0xfb4c18(0x1cf)]+_0x1bb5f2[_0xfb4c18(0x399)])/_0x1bb5f2['size'];},_0x4e0921=(_0x5b27c0,_0x21309d,_0x214dc3)=>{const _0x429459=_0x59dd37;let _0x142e49=_0x5b27c0[_0x429459(0x212)][_0x429459(0x2ae)]/_0x21309d[_0x429459(0x2b0)]['xAxis'][_0x429459(0x399)],_0x53f81c=(_0x5b27c0['coreRange'][_0x429459(0x2ae)]+_0x5b27c0[_0x429459(0x212)][_0x429459(0x35b)])/_0x21309d[_0x429459(0x2b0)]['xAxis']['count'],_0x5e8084=_0x5b27c0[_0x429459(0x212)][_0x429459(0x1b4)]/_0x21309d['metadata']['yAxis'][_0x429459(0x399)],_0x145c3f=(_0x5b27c0[_0x429459(0x212)][_0x429459(0x1b4)]+_0x5b27c0[_0x429459(0x212)][_0x429459(0x3c0)])/_0x21309d[_0x429459(0x2b0)][_0x429459(0x295)][_0x429459(0x399)],_0x5f3310=_0x5b27c0['coreRange'][_0x429459(0x1a1)]/_0x21309d[_0x429459(0x2b0)][_0x429459(0x3ba)][_0x429459(0x399)],_0x36ef3e=(_0x5b27c0['coreRange'][_0x429459(0x1a1)]+_0x5b27c0[_0x429459(0x212)]['sourceYCount'])/_0x21309d[_0x429459(0x2b0)][_0x429459(0x3ba)]['count'];return _0x214dc3[_0x429459(0x384)](_0x3fee2c=>{const _0x23495b=_0x429459;let _0xb0b038=_0x38cff1(_0x21309d['metadata']['yAxis'],_0x3fee2c[_0x23495b(0x43a)][0x0]),_0x421b17=_0x38cff1(_0x21309d[_0x23495b(0x2b0)]['yAxis'],_0x3fee2c[_0x23495b(0x43a)][_0x3fee2c['heights'][_0x23495b(0x2ec)]-0x1]);if(Math[_0x23495b(0x447)](_0xb0b038,_0x421b17)<_0x5e8084||Math[_0x23495b(0x37d)](_0xb0b038,_0x421b17)>_0x145c3f)return!0x1;for(let _0x10a18d=0x0;_0x10a18d<_0x3fee2c['path'][_0x23495b(0x2ec)];_0x10a18d+=0x2){let _0x430d53=_0x38cff1(_0x21309d['metadata']['xAxis'],_0x3fee2c[_0x23495b(0x418)][_0x10a18d]),_0x575d1f=_0x38cff1(_0x21309d['metadata']['zAxis'],_0x3fee2c[_0x23495b(0x418)][_0x10a18d+0x1]);if(_0x430d53>=_0x142e49&&_0x430d53<=_0x53f81c&&_0x575d1f>=_0x5f3310&&_0x575d1f<=_0x36ef3e)return!0x0;}return!0x1;});},_0x32ae2e=(_0x77c098,_0x22d75d,_0x4eab19,_0x2cb221)=>{const _0x845168=_0x59dd37;let _0x2a8c79=_0x4eab19[_0x845168(0x2a6)];if(_0x2a8c79){let _0x4affc9=_0x2a8c79['axis']==='x'?_0x22d75d[_0x845168(0x2b0)][_0x845168(0x280)]:_0x2a8c79['axis']==='y'?_0x22d75d['metadata'][_0x845168(0x295)]:_0x22d75d['metadata'][_0x845168(0x3ba)];if(_0x53de05(_0x77c098,_0x22d75d,_0x2a8c79[_0x845168(0x250)],_0x38cff1(_0x4affc9,_0x2a8c79['position'])))return 0x0;}for(let _0x4bd556 of _0x4eab19[_0x845168(0x207)]){let _0x1e2d35=_0x4bd556[_0x845168(0x250)]==='x'?_0x22d75d['metadata'][_0x845168(0x280)]:_0x4bd556[_0x845168(0x250)]==='y'?_0x22d75d[_0x845168(0x2b0)][_0x845168(0x295)]:_0x22d75d[_0x845168(0x2b0)][_0x845168(0x3ba)];if(_0x4bd556[_0x845168(0x45c)]&&_0x53de05(_0x77c098,_0x22d75d,_0x4bd556[_0x845168(0x250)],_0x38cff1(_0x1e2d35,_0x4bd556[_0x845168(0x448)])))return 0x1;}return _0x4e0921(_0x77c098,_0x22d75d,_0x2cb221)?0x2:0x3;};var _0x3203d9=class _0x213dcc{['backend']=_0x59dd37(0x329);['renderer'];[_0x59dd37(0x439)];[_0x59dd37(0x190)];[_0x59dd37(0x375)];[_0x59dd37(0x1bd)];['eventDisposers']=[];[_0x59dd37(0x279)];[_0x59dd37(0x208)];[_0x59dd37(0x39d)];[_0x59dd37(0x41c)];[_0x59dd37(0x223)];[_0x59dd37(0x2e5)];[_0x59dd37(0x2fc)];[_0x59dd37(0x22d)]=[];['timeIndex'];['sourceGeneration']=0x0;['loadedKeys']=new Set();[_0x59dd37(0x347)]=new Map();[_0x59dd37(0x38a)]=new Set();['frameRequest']=0x0;['destroyed']=!0x1;[_0x59dd37(0x3d3)];[_0x59dd37(0x14e)];[_0x59dd37(0x204)];[_0x59dd37(0x20e)];['quality'];[_0x59dd37(0x379)]=_0x59dd37(0x449);[_0x59dd37(0x1fb)]=0x0;[_0x59dd37(0x1f1)]=0x0;[_0x59dd37(0x321)];[_0x59dd37(0x420)]=null;[_0x59dd37(0x3a3)];[_0x59dd37(0x40a)];[_0x59dd37(0x45d)];[_0x59dd37(0x289)];['interactionStepScale'];['activeInteractions']=new Set();[_0x59dd37(0x241)]=!0x0;[_0x59dd37(0x2eb)]=!0x1;[_0x59dd37(0x15f)]=0x0;[_0x59dd37(0x345)]=0x0;[_0x59dd37(0x400)]=null;['sliceDepthMode'];[_0x59dd37(0x1b5)];[_0x59dd37(0x357)];['lastSubmittedFrameTimestamp']=0x0;['lastTimingFrameTimestamp']=0x0;[_0x59dd37(0x177)]=0x0;[_0x59dd37(0x340)]=new Set();['sliceInteraction']=null;[_0x59dd37(0x1c1)]=null;constructor(_0xf1d86,_0x3b7055){const _0x50dbba=_0x59dd37;this[_0x50dbba(0x416)]=_0x3b7055,this[_0x50dbba(0x190)]=_0xf1d86[_0x50dbba(0x190)],this['interactionElement']=_0xf1d86[_0x50dbba(0x1bd)]??_0xf1d86[_0x50dbba(0x190)],this[_0x50dbba(0x375)]=_0xf1d86[_0x50dbba(0x375)]??_0x50dbba(0x3bd),this['source']=_0xf1d86[_0x50dbba(0x279)],this[_0x50dbba(0x441)]=_0xf1d86[_0x50dbba(0x441)]??0x0,this[_0x50dbba(0x208)]=this[_0x50dbba(0x393)](_0xf1d86),this[_0x50dbba(0x39d)]=_0x3d58ec(this['source'][_0x50dbba(0x2b0)],this[_0x50dbba(0x208)]),this[_0x50dbba(0x439)]=new _0x17b94f({'state':_0xf1d86[_0x50dbba(0x186)]??_0x2b6458}),this[_0x50dbba(0x41c)]=this[_0x50dbba(0x18a)](_0xf1d86);let _0x521bbc=_0x2dcf50(_0xf1d86['colorStops'],_0xf1d86[_0x50dbba(0x2fc)]);if(this['colorStops']=_0x521bbc[_0x50dbba(0x223)],this['colorInputs']=_0xf1d86['colorStops'],this[_0x50dbba(0x2fc)]=_0xf1d86[_0x50dbba(0x2fc)],this[_0x50dbba(0x3d3)]=_0xf1d86[_0x50dbba(0x235)]??_0xd3583c,this[_0x50dbba(0x14e)]=_0x42f633(_0xf1d86['verticalScale']??0x1,'verticalScale'),this[_0x50dbba(0x204)]=_0xf1d86[_0x50dbba(0x204)]??_0x50dbba(0x398),this[_0x50dbba(0x204)]===_0x50dbba(0x3d8)&&_0xf1d86[_0x50dbba(0x235)])throw Error(_0x50dbba(0x2e3));this[_0x50dbba(0x20e)]=_0xf1d86[_0x50dbba(0x20e)]??null,this[_0x50dbba(0x34e)]=_0xf1d86[_0x50dbba(0x34e)]??_0x50dbba(0x165),this[_0x50dbba(0x3a3)]=_0xf1d86[_0x50dbba(0x3a3)]??_0x50dbba(0x346),this['pixelRatioCap']=_0x42f633(_0xf1d86[_0x50dbba(0x40a)]??0x2,_0x50dbba(0x40a)),this['renderScale']=_0x42f633(_0xf1d86[_0x50dbba(0x45d)]??0x1,'renderScale'),this['interactionRenderScale']=_0x42f633(_0xf1d86['interactionRenderScale']??0.6,_0x50dbba(0x289)),this[_0x50dbba(0x443)]=_0x42f633(_0xf1d86[_0x50dbba(0x443)]??0x1,_0x50dbba(0x443)),this['colorMode']=_0xf1d86[_0x50dbba(0x321)]??_0x50dbba(0x3f9),this[_0x50dbba(0x16f)]=_0xf1d86[_0x50dbba(0x3d5)]?.[_0x50dbba(0x251)]??_0x50dbba(0x2cf),this['slicePlateColor']=_0xf1d86[_0x50dbba(0x3d5)]?.[_0x50dbba(0x132)],this['onSlicesChange']=_0xf1d86[_0x50dbba(0x3d5)]?.[_0x50dbba(0x357)],this['renderer'][_0x50dbba(0x1ec)](()=>this['handleFrameAvailable']()),this[_0x50dbba(0x416)][_0x50dbba(0x17c)](_0x521bbc[_0x50dbba(0x223)],_0x521bbc[_0x50dbba(0x2fc)]);let _0x3054b7=_0xf1d86[_0x50dbba(0x188)]??this[_0x50dbba(0x204)]===_0x50dbba(0x398);this[_0x50dbba(0x416)][_0x50dbba(0x1d4)](_0x3054b7?[_0x1295d8(),_0x16ef13()]:[]),this[_0x50dbba(0x416)]['update']({'renderMode':_0xf1d86[_0x50dbba(0x3ab)]??'composite','colorMode':this[_0x50dbba(0x321)],'opacity':_0xf1d86[_0x50dbba(0x405)]??0.3,'densityScale':_0xf1d86[_0x50dbba(0x270)]??0x1,'stepLength':this[_0x50dbba(0x2cb)](),'volumeDimFactor':this[_0x50dbba(0x41c)][_0x50dbba(0x32c)]}),this[_0x50dbba(0x3d9)](),this[_0x50dbba(0x41d)](),this[_0x50dbba(0x3b7)](),this['bindSliceInteraction'](_0xf1d86),this[_0x50dbba(0x303)]();}static async[_0x59dd37(0x360)](_0x5431e5){const _0x4cb5e8=_0x59dd37;if(_0x55026c(_0x5431e5[_0x4cb5e8(0x279)]),_0x3a1c32(_0x5431e5[_0x4cb5e8(0x279)][_0x4cb5e8(0x2b0)],_0x5431e5[_0x4cb5e8(0x441)]??0x0),(_0x5431e5[_0x4cb5e8(0x25f)]?.['halo']??0x1)!==0x1)throw Error('The\x20current\x20WebGPU\x20volume\x20atlas\x20requires\x20halo:\x201.\x20当前\x20WebGPU\x20体积图集要求\x20halo\x20为\x201。');let _0x564812=_0x5431e5[_0x4cb5e8(0x25f)]?.[_0x4cb5e8(0x2c6)]??0x20000000,_0x260620=new _0x57e3d1({'memoryTargetBytes':_0x564812,'memoryHardLimitBytes':_0x5431e5[_0x4cb5e8(0x25f)]?.[_0x4cb5e8(0x2ca)]??_0x564812});await _0x260620[_0x4cb5e8(0x2ff)](_0x5431e5[_0x4cb5e8(0x190)]);let _0x202d6c=new _0x213dcc(_0x5431e5,_0x260620);return _0x202d6c['resize'](),_0x202d6c[_0x4cb5e8(0x206)](),_0x202d6c['renderMode']===_0x4cb5e8(0x3bd)&&_0x202d6c[_0x4cb5e8(0x3bb)](),_0x202d6c;}get['camera'](){const _0xf48abb=_0x59dd37;return this[_0xf48abb(0x439)][_0xf48abb(0x1a5)];}get[_0x59dd37(0x207)](){const _0x1c9245=_0x59dd37;return this[_0x1c9245(0x41c)][_0x1c9245(0x207)];}get[_0x59dd37(0x370)](){const _0x4b83c2=_0x59dd37;let _0x4aad5c=this[_0x4b83c2(0x375)]===_0x4b83c2(0x17b)||this[_0x4b83c2(0x3f8)]()||performance[_0x4b83c2(0x277)]()-this[_0x4b83c2(0x320)]<=0xfa?this['actualFrameIntervalMilliseconds']:0x0;return{...this['renderer'][_0x4b83c2(0x370)],'pendingBrickCount':this[_0x4b83c2(0x347)][_0x4b83c2(0x406)],'brickScheduleCount':this[_0x4b83c2(0x15f)],'brickSortCount':this[_0x4b83c2(0x345)],'actualFrameIntervalMilliseconds':_0x4aad5c,'estimatedFps':_0x4aad5c>0x0?0x3e8/_0x4aad5c:0x0,'effectiveQuality':this[_0x4b83c2(0x3ce)](),'effectiveRenderScale':this[_0x4b83c2(0x355)](),'interactionKind':this[_0x4b83c2(0x257)]()};}[_0x59dd37(0x2c7)](_0x15c2a5){const _0x2efe95=_0x59dd37;_0x15c2a5['camera']&&this[_0x2efe95(0x391)](_0x15c2a5[_0x2efe95(0x186)]),_0x15c2a5[_0x2efe95(0x235)]&&(this[_0x2efe95(0x3d3)]=[..._0x15c2a5[_0x2efe95(0x235)]]),_0x15c2a5[_0x2efe95(0x14e)]!==void 0x0&&(this[_0x2efe95(0x14e)]=_0x42f633(_0x15c2a5[_0x2efe95(0x14e)],_0x2efe95(0x14e))),_0x15c2a5[_0x2efe95(0x20e)]!==void 0x0&&(this['clipBox']=_0x15c2a5[_0x2efe95(0x20e)]),_0x15c2a5['quality']&&(this[_0x2efe95(0x34e)]=_0x15c2a5[_0x2efe95(0x34e)]),_0x15c2a5[_0x2efe95(0x3a3)]&&(this[_0x2efe95(0x3a3)]=_0x15c2a5[_0x2efe95(0x3a3)]);let _0x1d8cd9=!0x1;if(_0x15c2a5['pixelRatioCap']!==void 0x0&&(this[_0x2efe95(0x40a)]=_0x42f633(_0x15c2a5['pixelRatioCap'],_0x2efe95(0x40a)),_0x1d8cd9=!0x0),_0x15c2a5[_0x2efe95(0x45d)]!==void 0x0&&(this[_0x2efe95(0x45d)]=_0x42f633(_0x15c2a5['renderScale'],_0x2efe95(0x45d)),_0x1d8cd9=!0x0),_0x15c2a5[_0x2efe95(0x289)]!==void 0x0&&(this[_0x2efe95(0x289)]=_0x42f633(_0x15c2a5['interactionRenderScale'],_0x2efe95(0x289)),_0x1d8cd9=this[_0x2efe95(0x3f8)]()),_0x15c2a5['interactionStepScale']!==void 0x0&&(this[_0x2efe95(0x443)]=_0x42f633(_0x15c2a5['interactionStepScale'],_0x2efe95(0x443))),_0x15c2a5['colorMode']&&(this[_0x2efe95(0x321)]=_0x15c2a5['colorMode']),_0x15c2a5[_0x2efe95(0x223)]||_0x15c2a5[_0x2efe95(0x2fc)]){let _0x32a90e=_0x2dcf50(_0x15c2a5[_0x2efe95(0x223)]??this[_0x2efe95(0x2e5)],_0x15c2a5[_0x2efe95(0x2fc)]??this['opacityStops']);this[_0x2efe95(0x223)]=_0x32a90e[_0x2efe95(0x223)],this['colorInputs']=_0x15c2a5['colorStops']??this['colorInputs'],this['opacityStops']=_0x15c2a5['opacityStops']??this[_0x2efe95(0x2fc)],this[_0x2efe95(0x416)][_0x2efe95(0x17c)](_0x32a90e[_0x2efe95(0x223)],_0x32a90e[_0x2efe95(0x2fc)]),this['rebuildProfiles']();}_0x15c2a5['colorMode']&&!_0x15c2a5[_0x2efe95(0x223)]&&!_0x15c2a5[_0x2efe95(0x2fc)]&&this['rebuildProfiles'](),this['renderer'][_0x2efe95(0x2c7)]({'renderMode':_0x15c2a5['mode'],'colorMode':_0x15c2a5[_0x2efe95(0x321)],'opacity':_0x15c2a5['opacity'],'densityScale':_0x15c2a5[_0x2efe95(0x270)],'stepLength':this[_0x2efe95(0x2cb)]()}),this[_0x2efe95(0x41d)](),_0x1d8cd9&&this[_0x2efe95(0x3e0)](),this[_0x2efe95(0x3bb)]();}[_0x59dd37(0x391)](_0x1a813b){const _0x2fc674=_0x59dd37;this[_0x2fc674(0x439)][_0x2fc674(0x21f)](_0x1a813b),this[_0x2fc674(0x3aa)](),this[_0x2fc674(0x3bb)]();}[_0x59dd37(0x2a5)](_0x338add){const _0x138121=_0x59dd37;_0x3a1c32(this['source']['metadata'],_0x338add),_0x338add!==this[_0x138121(0x441)]&&(this[_0x138121(0x441)]=_0x338add,this[_0x138121(0x2d9)]());}[_0x59dd37(0x3ed)](_0x131239){const _0x259aed=_0x59dd37;_0x55026c(_0x131239),this['source']=_0x131239,this['timeIndex']=Math['min'](this[_0x259aed(0x441)],_0x131239[_0x259aed(0x2b0)][_0x259aed(0x1a2)]-0x1),this[_0x259aed(0x208)]=_0x29795f(_0x131239[_0x259aed(0x2b0)],this['layout']['shape']),this[_0x259aed(0x39d)]=_0x3d58ec(_0x131239[_0x259aed(0x2b0)],this['layout']),this[_0x259aed(0x41c)][_0x259aed(0x1d4)](_0x131239[_0x259aed(0x2b0)]),this[_0x259aed(0x3d9)](),this[_0x259aed(0x41d)](),this[_0x259aed(0x2d9)](),this[_0x259aed(0x1ef)](),this['requestRender']();}['setRouteProfiles'](_0x2f21e2){const _0x7b705e=_0x59dd37;this[_0x7b705e(0x22d)]=_0x2f21e2,this[_0x7b705e(0x1ef)](),this[_0x7b705e(0x3aa)](),this['requestRender']();}[_0x59dd37(0x1e7)](_0x2bd105){const _0x5654fd=_0x59dd37;this[_0x5654fd(0x41c)][_0x5654fd(0x163)](_0x2bd105);}[_0x59dd37(0x31b)](_0x3ac72e){const _0xcc11a9=_0x59dd37;if(this[_0xcc11a9(0x146)]||this[_0xcc11a9(0x1f9)]['has'](_0x3ac72e))return;let _0x2775bc=!this[_0xcc11a9(0x3f8)]();this[_0xcc11a9(0x1f9)][_0xcc11a9(0x45b)](_0x3ac72e),_0x2775bc&&(this[_0xcc11a9(0x1d3)]=0x0,this[_0xcc11a9(0x3e0)]());}[_0x59dd37(0x3a9)](_0x20d87c){const _0x17541a=_0x59dd37;this[_0x17541a(0x146)]||!this['activeInteractions'][_0x17541a(0x23d)](_0x20d87c)||this[_0x17541a(0x3f8)]()||(this[_0x17541a(0x1d3)]=0x0,this[_0x17541a(0x3e0)]());}[_0x59dd37(0x193)](_0x1a9735,_0x21d043){const _0x4eeeee=_0x59dd37;this['sliceState'][_0x4eeeee(0x178)](_0x1a9735,_0x21d043);let _0x471399=this[_0x4eeeee(0x41c)][_0x4eeeee(0x2b2)]();if(!_0x471399)throw Error(_0x4eeeee(0x324));return _0x471399;}[_0x59dd37(0x3bf)](_0x1a64e1,_0x19e2ec){const _0x11d483=_0x59dd37;this[_0x11d483(0x41c)][_0x11d483(0x3c3)](_0x1a64e1,_0x19e2ec);}['removeSlice'](_0x5e17f7){const _0x5bdf73=_0x59dd37;this[_0x5bdf73(0x41c)][_0x5bdf73(0x1b7)](_0x5e17f7);}[_0x59dd37(0x1a7)](){this['sliceState']['clearLockedSlices']();}[_0x59dd37(0x3e0)](){const _0x5ad07f=_0x59dd37;let _0x18d0a5=Math[_0x5ad07f(0x37d)](window[_0x5ad07f(0x2e9)]||0x1,this[_0x5ad07f(0x40a)])*this['getEffectiveRenderScale'](),_0x235b2b=Math[_0x5ad07f(0x447)](0x1,Math[_0x5ad07f(0x175)](this['canvas'][_0x5ad07f(0x43b)]*_0x18d0a5||this[_0x5ad07f(0x190)][_0x5ad07f(0x31e)]||0x1)),_0x20be8e=Math[_0x5ad07f(0x447)](0x1,Math[_0x5ad07f(0x175)](this[_0x5ad07f(0x190)][_0x5ad07f(0x369)]*_0x18d0a5||this[_0x5ad07f(0x190)]['height']||0x1));this[_0x5ad07f(0x439)][_0x5ad07f(0x12f)](_0x235b2b/_0x20be8e),(this[_0x5ad07f(0x190)][_0x5ad07f(0x31e)]!==_0x235b2b||this[_0x5ad07f(0x190)][_0x5ad07f(0x267)]!==_0x20be8e)&&this['renderer'][_0x5ad07f(0x3e0)](_0x235b2b,_0x20be8e),this['requestRender']();}[_0x59dd37(0x2e4)](){const _0x2e8ba8=_0x59dd37;if(this[_0x2e8ba8(0x146)])return;this[_0x2e8ba8(0x201)](),this['flushBrickSchedule']();let _0x29df88=this[_0x2e8ba8(0x439)][_0x2e8ba8(0x298)];if(this[_0x2e8ba8(0x416)]['setCamera']({'viewProjection':Array[_0x2e8ba8(0x130)](_0x29df88['viewProjection']),'inverseViewProjection':Array['from'](_0x29df88[_0x2e8ba8(0x1da)]),'cameraPosition':this['volumeCamera'][_0x2e8ba8(0x1a5)]['position']}),this[_0x2e8ba8(0x416)][_0x2e8ba8(0x2c7)]({'stepLength':this[_0x2e8ba8(0x2cb)]()}),!this[_0x2e8ba8(0x416)][_0x2e8ba8(0x2e4)]()){this['renderDirty']=!0x0;return;}this[_0x2e8ba8(0x241)]=!0x1,this[_0x2e8ba8(0x159)](performance['now']()),this['markerOverlay']?.[_0x2e8ba8(0x2c7)]();}['captureFrame'](){const _0x5d6817=_0x59dd37;if(this[_0x5d6817(0x146)])return Promise[_0x5d6817(0x354)](Error(_0x5d6817(0x197)));this['flushSliceState'](),this[_0x5d6817(0x27c)]();let _0x27762c=this[_0x5d6817(0x439)][_0x5d6817(0x298)];return this[_0x5d6817(0x416)]['setCamera']({'viewProjection':Array[_0x5d6817(0x130)](_0x27762c[_0x5d6817(0x301)]),'inverseViewProjection':Array['from'](_0x27762c[_0x5d6817(0x1da)]),'cameraPosition':this[_0x5d6817(0x439)][_0x5d6817(0x1a5)][_0x5d6817(0x448)]}),this[_0x5d6817(0x416)]['captureFrame']();}['destroy'](){const _0xa8aa88=_0x59dd37;if(!this['destroyed']){this['destroyed']=!0x0,this[_0xa8aa88(0x444)]+=0x1;for(let _0x21cf37 of this['requestControllers'])_0x21cf37[_0xa8aa88(0x214)]();this[_0xa8aa88(0x340)]['clear'](),cancelAnimationFrame(this[_0xa8aa88(0x19b)]),this['renderer'][_0xa8aa88(0x1ec)](null),this[_0xa8aa88(0x2a4)][_0xa8aa88(0x419)](0x0)[_0xa8aa88(0x26e)](_0x50844d=>_0x50844d()),this['renderer'][_0xa8aa88(0x325)](),this[_0xa8aa88(0x3d5)]?.['destroy'](),this[_0xa8aa88(0x1c1)]?.[_0xa8aa88(0x325)](),this[_0xa8aa88(0x442)][_0xa8aa88(0x2e0)](),this[_0xa8aa88(0x347)]['clear'](),this[_0xa8aa88(0x38a)][_0xa8aa88(0x2e0)](),this[_0xa8aa88(0x1f9)]['clear'](),this[_0xa8aa88(0x400)]=null;}}[_0x59dd37(0x393)](_0x6e16f1){const _0x32a257=_0x59dd37;return _0x29795f(_0x6e16f1[_0x32a257(0x279)]['metadata'],{'width':_0x6e16f1[_0x32a257(0x25f)]?.[_0x32a257(0x31e)],'height':_0x6e16f1['chunk']?.[_0x32a257(0x267)],'depth':_0x6e16f1[_0x32a257(0x25f)]?.[_0x32a257(0x43f)],'halo':_0x6e16f1[_0x32a257(0x25f)]?.[_0x32a257(0x3e8)]});}[_0x59dd37(0x3ce)](){const _0x2e7372=_0x59dd37;return this[_0x2e7372(0x34e)]===_0x2e7372(0x165)?this['autoQuality']:this['quality'];}[_0x59dd37(0x2cb)](){const _0x101fe9=_0x59dd37;let _0x1caff7=_0x2ca023(this['getEffectiveQuality']());return(this[_0x101fe9(0x204)]===_0x101fe9(0x3d8)?_0x1caff7*0.05:_0x1caff7)*(this['isInteracting']()?this['interactionStepScale']:0x1);}['isInteracting'](){const _0x327538=_0x59dd37;return this[_0x327538(0x1f9)][_0x327538(0x406)]>0x0;}[_0x59dd37(0x257)](){const _0x31da9b=_0x59dd37;return this['activeInteractions'][_0x31da9b(0x406)]===0x0?_0x31da9b(0x390):this['activeInteractions'][_0x31da9b(0x406)]>0x1?_0x31da9b(0x29c):this[_0x31da9b(0x1f9)]['values']()[_0x31da9b(0x156)]()['value']??_0x31da9b(0x390);}[_0x59dd37(0x355)](){const _0x52d4da=_0x59dd37;return this[_0x52d4da(0x45d)]*(this[_0x52d4da(0x3f8)]()?this[_0x52d4da(0x289)]:0x1);}[_0x59dd37(0x159)](_0x1c0580){const _0x1acf9f=_0x59dd37;if(this[_0x1acf9f(0x320)]=_0x1c0580,!(this['renderMode']===_0x1acf9f(0x17b)||this[_0x1acf9f(0x3f8)]())){this['lastTimingFrameTimestamp']=0x0;return;}if(this[_0x1acf9f(0x1d3)]>0x0){let _0x2a9c8d=_0x1c0580-this['lastTimingFrameTimestamp'];_0x2a9c8d>0x0&&_0x2a9c8d<=0xfa&&(this[_0x1acf9f(0x177)]=this[_0x1acf9f(0x177)]===0x0?_0x2a9c8d:this['actualFrameIntervalMilliseconds']*0.8+_0x2a9c8d*0.2,this[_0x1acf9f(0x221)](_0x2a9c8d));}this[_0x1acf9f(0x1d3)]=_0x1c0580;}[_0x59dd37(0x221)](_0x5379ca){const _0x539835=_0x59dd37;if(this[_0x539835(0x34e)]!==_0x539835(0x165)||(this['autoFrameCount']+=0x1,this[_0x539835(0x1f1)]+=_0x5379ca,this[_0x539835(0x1fb)]<0x1e))return;let _0x50776e=this[_0x539835(0x1f1)]/this[_0x539835(0x1fb)];if(this['autoFrameCount']=0x0,this[_0x539835(0x1f1)]=0x0,this[_0x539835(0x3f8)]()&&_0x50776e<0xe)return;let _0x1ef343=_0x2c9de5(this[_0x539835(0x379)],_0x50776e);_0x1ef343!==this[_0x539835(0x379)]&&(this[_0x539835(0x379)]=_0x1ef343,this['requestBrickSchedule'](),this[_0x539835(0x3bb)]());}['createSliceState'](_0xe9a46e){const _0x4bbf4b=_0x59dd37;return new _0x44604f(_0xe9a46e[_0x4bbf4b(0x279)][_0x4bbf4b(0x2b0)],{'volumeDimFactor':_0xe9a46e[_0x4bbf4b(0x3d5)]?.[_0x4bbf4b(0x32c)],'depthMode':_0xe9a46e['sliceInteraction']?.[_0x4bbf4b(0x251)],'maxLockedSlices':_0xe9a46e[_0x4bbf4b(0x3d5)]?.['maxLockedSlices'],'onLimitReached':_0x154d11=>_0xe9a46e['sliceInteraction']?.[_0x4bbf4b(0x143)]?.(Error(_0x4bbf4b(0x24d)+_0x154d11+_0x4bbf4b(0x413)+_0x154d11+'。'))});}[_0x59dd37(0x3b7)](){const _0x14c0fa=_0x59dd37;let _0x7a60e8=this['sliceState'][_0x14c0fa(0x38b)](_0x52ad07=>{const _0x475fda=_0x14c0fa;this[_0x475fda(0x400)]=_0x52ad07,this[_0x475fda(0x3bb)]();});this['eventDisposers'][_0x14c0fa(0x222)](_0x7a60e8);}[_0x59dd37(0x201)](){const _0x57b69d=_0x59dd37;let _0x31760b=this[_0x57b69d(0x400)];if(!_0x31760b)return;this[_0x57b69d(0x400)]=null;let _0x2566b2=[];if(_0x31760b['preview']){let _0x2e17f1=_0x31760b[_0x57b69d(0x2a6)][_0x57b69d(0x250)]==='x'?this[_0x57b69d(0x279)][_0x57b69d(0x2b0)][_0x57b69d(0x280)]:_0x31760b['preview'][_0x57b69d(0x250)]==='y'?this[_0x57b69d(0x279)][_0x57b69d(0x2b0)]['yAxis']:this['source']['metadata'][_0x57b69d(0x3ba)];_0x2566b2[_0x57b69d(0x222)]({'id':'volume-slice-preview','axis':_0x31760b[_0x57b69d(0x2a6)][_0x57b69d(0x250)],'position':_0x295475(_0x38cff1(_0x2e17f1,_0x31760b[_0x57b69d(0x2a6)]['position'])),'depthMode':this['sliceDepthMode'],'visible':!0x0,'opacity':0.72,'plateColor':this['slicePlateColor']});}for(let _0xbfd22f of _0x31760b[_0x57b69d(0x207)]){let _0xec9c1c=_0xbfd22f[_0x57b69d(0x250)]==='x'?this[_0x57b69d(0x279)][_0x57b69d(0x2b0)]['xAxis']:_0xbfd22f[_0x57b69d(0x250)]==='y'?this[_0x57b69d(0x279)]['metadata'][_0x57b69d(0x295)]:this[_0x57b69d(0x279)]['metadata'][_0x57b69d(0x3ba)];_0x2566b2[_0x57b69d(0x222)]({..._0xbfd22f,'position':_0x295475(_0x38cff1(_0xec9c1c,_0xbfd22f[_0x57b69d(0x448)])),'opacity':0x1,'plateColor':this['slicePlateColor']});}this['renderer']['setSlices'](_0x2566b2),this[_0x57b69d(0x416)][_0x57b69d(0x2c7)]({'volumeDimFactor':_0x31760b[_0x57b69d(0x2a6)]||_0x31760b[_0x57b69d(0x207)]['some'](_0x1a757c=>_0x1a757c['visible'])?_0x31760b[_0x57b69d(0x32c)]:0x1}),this[_0x57b69d(0x357)]?.(_0x31760b[_0x57b69d(0x207)]),this[_0x57b69d(0x2eb)]=!0x0;}[_0x59dd37(0x35d)](_0x26b0b6){const _0x3da72e=_0x59dd37;let _0x5f291f=()=>({'viewProjectionMatrix':this[_0x3da72e(0x439)][_0x3da72e(0x298)][_0x3da72e(0x301)],'modelMatrix':_0x826bf7(this[_0x3da72e(0x3d3)],this[_0x3da72e(0x14e)]),'viewportWidth':Math['max'](0x1,this[_0x3da72e(0x190)][_0x3da72e(0x43b)]),'viewportHeight':Math[_0x3da72e(0x447)](0x1,this[_0x3da72e(0x190)][_0x3da72e(0x369)])});this[_0x3da72e(0x3d5)]=new _0x32ac4f(this['interactionElement'],this[_0x3da72e(0x41c)],_0x5f291f,{'hitTolerancePixels':_0x26b0b6[_0x3da72e(0x3d5)]?.[_0x3da72e(0x3dd)],'onInteractionStart':()=>this[_0x3da72e(0x31b)]('slice'),'onInteractionEnd':()=>this[_0x3da72e(0x3a9)]('slice')}),this[_0x3da72e(0x3d5)]['initialize'](),_0x26b0b6[_0x3da72e(0x2e6)]&&(this[_0x3da72e(0x1c1)]=new _0x1437ae(_0x26b0b6[_0x3da72e(0x2e6)],this[_0x3da72e(0x41c)],_0x5f291f,{'interactionController':this[_0x3da72e(0x3d5)]}));}['bindControls'](){const _0x263643=_0x59dd37;let _0x57d0ab=_0x47964f=>{const _0x25eb9c=_0x44e0;_0x47964f[_0x25eb9c(0x35f)]!==0x0&&_0x47964f[_0x25eb9c(0x35f)]!==0x2||(this[_0x25eb9c(0x420)]={'id':_0x47964f[_0x25eb9c(0x3f3)],'x':_0x47964f['clientX'],'y':_0x47964f[_0x25eb9c(0x36a)],'pan':_0x47964f['button']===0x2||_0x47964f['pointerType']!==_0x25eb9c(0x2ed)&&this[_0x25eb9c(0x3a3)]===_0x25eb9c(0x2da)},this[_0x25eb9c(0x31b)](_0x25eb9c(0x186)),this['interactionElement'][_0x25eb9c(0x224)]?.(_0x47964f[_0x25eb9c(0x3f3)]),_0x47964f[_0x25eb9c(0x229)]());},_0x52618b=_0x5863f6=>{const _0x3abbcd=_0x44e0;if(!this[_0x3abbcd(0x420)]||this['pointer']['id']!==_0x5863f6[_0x3abbcd(0x3f3)])return;let _0x208953=_0x5863f6[_0x3abbcd(0x316)]-this[_0x3abbcd(0x420)]['x'],_0x409103=_0x5863f6['clientY']-this[_0x3abbcd(0x420)]['y'];this['pointer']['x']=_0x5863f6[_0x3abbcd(0x316)],this[_0x3abbcd(0x420)]['y']=_0x5863f6['clientY'],this['pointer'][_0x3abbcd(0x2da)]?this[_0x3abbcd(0x439)][_0x3abbcd(0x2da)](_0x208953,_0x409103,this['canvas'][_0x3abbcd(0x369)]):this[_0x3abbcd(0x439)][_0x3abbcd(0x346)](_0x208953,_0x409103),this[_0x3abbcd(0x3aa)](),this[_0x3abbcd(0x3bb)]();},_0x3bbc9d=_0x3c1310=>{const _0x3169c6=_0x44e0;this['pointer']?.['id']===_0x3c1310['pointerId']&&(this[_0x3169c6(0x420)]=null,this[_0x3169c6(0x3a9)](_0x3169c6(0x186)));},_0x4779af=_0x3ebbed=>{const _0x446d35=_0x44e0;_0x3ebbed[_0x446d35(0x229)](),this[_0x446d35(0x439)][_0x446d35(0x1fe)](_0x3ebbed[_0x446d35(0x18e)]),this[_0x446d35(0x3aa)](),this[_0x446d35(0x3bb)]();},_0x4bca07=_0x4530de=>_0x4530de[_0x263643(0x229)]();this[_0x263643(0x1bd)][_0x263643(0x13c)](_0x263643(0x380),_0x57d0ab),this[_0x263643(0x1bd)][_0x263643(0x13c)]('pointermove',_0x52618b),this[_0x263643(0x1bd)][_0x263643(0x13c)](_0x263643(0x155),_0x3bbc9d),this[_0x263643(0x1bd)][_0x263643(0x13c)](_0x263643(0x3b1),_0x3bbc9d),this[_0x263643(0x1bd)][_0x263643(0x13c)]('wheel',_0x4779af,{'passive':!0x1}),this[_0x263643(0x1bd)][_0x263643(0x13c)](_0x263643(0x1e8),_0x4bca07),this[_0x263643(0x2a4)][_0x263643(0x222)](()=>this[_0x263643(0x1bd)][_0x263643(0x3fc)](_0x263643(0x380),_0x57d0ab),()=>this[_0x263643(0x1bd)][_0x263643(0x3fc)]('pointermove',_0x52618b),()=>this[_0x263643(0x1bd)][_0x263643(0x3fc)](_0x263643(0x155),_0x3bbc9d),()=>this[_0x263643(0x1bd)][_0x263643(0x3fc)]('pointercancel',_0x3bbc9d),()=>this[_0x263643(0x1bd)][_0x263643(0x3fc)](_0x263643(0x30c),_0x4779af),()=>this[_0x263643(0x1bd)]['removeEventListener'](_0x263643(0x1e8),_0x4bca07));}[_0x59dd37(0x3d9)](){const _0x69678=_0x59dd37;this[_0x69678(0x416)]['setSource']({'xAxis':this[_0x69678(0x279)][_0x69678(0x2b0)]['xAxis'],'yAxis':this[_0x69678(0x279)][_0x69678(0x2b0)]['yAxis'],'zAxis':this[_0x69678(0x279)][_0x69678(0x2b0)][_0x69678(0x3ba)],'brickWidth':this[_0x69678(0x208)]['shape'][_0x69678(0x31e)],'brickHeight':this[_0x69678(0x208)]['shape'][_0x69678(0x267)],'brickDepth':this[_0x69678(0x208)][_0x69678(0x382)][_0x69678(0x43f)],'halo':0x1,'noData':this['source'][_0x69678(0x2b0)][_0x69678(0x2e1)]});}[_0x59dd37(0x41d)](){const _0x123992=_0x59dd37;if(this[_0x123992(0x204)]===_0x123992(0x3d8)){let _0x46fef9=_0x4aed0e(this[_0x123992(0x279)][_0x123992(0x2b0)],this[_0x123992(0x14e)]);this[_0x123992(0x416)][_0x123992(0x2c7)]({'modelMatrix':_0x46fef9[_0x123992(0x2d7)],'inverseModelMatrix':Array[_0x123992(0x130)](_0x17a1a7(_0x46fef9[_0x123992(0x2d7)])),'geographicTransform':_0x46fef9[_0x123992(0x331)],'clipMinimum':[0x0,0x0,0x0],'clipMaximum':[0x1,0x1,0x1]}),this['requestRender']();return;}let _0x297824=_0x826bf7(this[_0x123992(0x3d3)],this[_0x123992(0x14e)]),_0x494524=_0x3c1e06(this[_0x123992(0x279)],this[_0x123992(0x20e)]);this[_0x123992(0x416)][_0x123992(0x2c7)]({'modelMatrix':Array[_0x123992(0x130)](_0x297824),'inverseModelMatrix':Array[_0x123992(0x130)](_0x17a1a7(_0x297824)),'geographicTransform':null,'clipMinimum':_0x494524[_0x123992(0x2e7)],'clipMaximum':_0x494524[_0x123992(0x16e)]}),this[_0x123992(0x3bb)]();}[_0x59dd37(0x1ef)](){const _0x41e6a4=_0x59dd37;let _0x479c5b=this[_0x41e6a4(0x22d)][_0x41e6a4(0x139)](_0x223fec=>_0x33d55a(_0x1ef2dc(_0x223fec,this[_0x41e6a4(0x279)]['metadata']),this['colorStops'],this[_0x41e6a4(0x2fc)],this[_0x41e6a4(0x321)]));this[_0x41e6a4(0x416)][_0x41e6a4(0x3d7)](_0x479c5b),this[_0x41e6a4(0x3bb)]();}['resetBrickRequests'](){const _0x51e2a2=_0x59dd37;this[_0x51e2a2(0x444)]+=0x1;for(let _0x1f7ecf of this[_0x51e2a2(0x340)])_0x1f7ecf[_0x51e2a2(0x214)]();this[_0x51e2a2(0x340)][_0x51e2a2(0x2e0)](),this['loadedKeys']['clear'](),this[_0x51e2a2(0x347)][_0x51e2a2(0x2e0)](),this[_0x51e2a2(0x38a)][_0x51e2a2(0x2e0)](),this[_0x51e2a2(0x3d9)](),this[_0x51e2a2(0x206)]();}[_0x59dd37(0x3aa)](){const _0xc3c095=_0x59dd37;this[_0xc3c095(0x2eb)]=!0x0,this['requestRender']();}['flushBrickSchedule'](){const _0x3297b1=_0x59dd37;this[_0x3297b1(0x2eb)]&&(this[_0x3297b1(0x2eb)]=!0x1,this[_0x3297b1(0x206)]());}['scheduleBricks'](){const _0x192e86=_0x59dd37;if(this[_0x192e86(0x146)])return;this['brickScheduleDirty']=!0x1,this['brickScheduleCount']+=0x1;let _0x532cc9=this[_0x192e86(0x416)]['statistics'][_0x192e86(0x339)];if(_0x532cc9<=0x0)return;let _0x54103f=_0x532cc9>=this[_0x192e86(0x39d)][_0x192e86(0x2ec)];if(_0x54103f&&this['desiredKeys'][_0x192e86(0x406)]===this[_0x192e86(0x39d)][_0x192e86(0x2ec)]&&this[_0x192e86(0x442)][_0x192e86(0x406)]===this['descriptors'][_0x192e86(0x2ec)]&&this[_0x192e86(0x347)][_0x192e86(0x406)]===0x0)return;let _0x2c57fa;_0x54103f?_0x2c57fa=this['descriptors']:(this[_0x192e86(0x345)]+=0x1,_0x2c57fa=[...this[_0x192e86(0x39d)]]['sort']((_0x706da7,_0x862892)=>_0x32ae2e(_0x706da7,this[_0x192e86(0x279)],this[_0x192e86(0x41c)],this[_0x192e86(0x22d)])-_0x32ae2e(_0x862892,this[_0x192e86(0x279)],this[_0x192e86(0x41c)],this[_0x192e86(0x22d)])||_0x430337(_0x706da7,this[_0x192e86(0x208)],this[_0x192e86(0x439)][_0x192e86(0x1a5)])-_0x430337(_0x862892,this['layout'],this['volumeCamera'][_0x192e86(0x1a5)]))['slice'](0x0,_0x532cc9));let _0x31cc2f=new Set(_0x2c57fa[_0x192e86(0x139)](_0x3619d9=>_0x3619d9['key']));this['desiredKeys']=_0x31cc2f,_0x54103f||this[_0x192e86(0x416)][_0x192e86(0x37c)](_0x2c57fa[_0x192e86(0x16d)](_0x5a535b=>this[_0x192e86(0x442)][_0x192e86(0x290)](_0x5a535b[_0x192e86(0x23b)]))['map'](_0x44fe6e=>_0x4c5988(_0x44fe6e,this[_0x192e86(0x208)])));for(let _0x4173ef of this[_0x192e86(0x442)])_0x31cc2f['has'](_0x4173ef)||this[_0x192e86(0x442)][_0x192e86(0x23d)](_0x4173ef);let _0x1f069c=Math[_0x192e86(0x447)](0x0,_0x329e3f(this[_0x192e86(0x3ce)]())-this[_0x192e86(0x347)][_0x192e86(0x406)]),_0x4fd0d1=_0x2c57fa[_0x192e86(0x16d)](_0x230949=>!this[_0x192e86(0x442)][_0x192e86(0x290)](_0x230949[_0x192e86(0x23b)])&&!this[_0x192e86(0x347)]['has'](_0x230949['key']))[_0x192e86(0x244)](0x0,_0x1f069c);for(let _0x25dab2 of _0x4fd0d1)this[_0x192e86(0x1fd)](_0x25dab2);}['loadBrick'](_0x5b9ce9){const _0x5ead50=_0x59dd37;let _0x4d20a8=this[_0x5ead50(0x444)],_0x53066c=this[_0x5ead50(0x279)],_0x25e8b1=this['timeIndex'],_0x1560c0=new AbortController();this[_0x5ead50(0x340)][_0x5ead50(0x45b)](_0x1560c0),this['pendingKeys'][_0x5ead50(0x1ca)](_0x5b9ce9[_0x5ead50(0x23b)],_0x4d20a8),Promise['resolve'](_0x53066c[_0x5ead50(0x39a)](_0x25e8b1,_0x5b9ce9[_0x5ead50(0x184)],_0x1560c0[_0x5ead50(0x1aa)]))['then'](async _0x3d3c53=>{const _0x31819f=_0x5ead50;if(this[_0x31819f(0x146)]||_0x4d20a8!==this['sourceGeneration']||_0x53066c!==this['source']||_0x25e8b1!==this[_0x31819f(0x441)]||!this[_0x31819f(0x38a)][_0x31819f(0x290)](_0x5b9ce9[_0x31819f(0x23b)]))return;let _0x18300d=_0x25f863(_0x53066c[_0x31819f(0x2b0)],this[_0x31819f(0x208)][_0x31819f(0x382)],_0x5b9ce9,_0x3d3c53),_0x499229=_0x4c5988(_0x5b9ce9,this['layout']);await this['renderer'][_0x31819f(0x402)]({'logicalIndex':_0x499229,'values':_0x18300d}),!(this['destroyed']||_0x4d20a8!==this[_0x31819f(0x444)]||_0x53066c!==this[_0x31819f(0x279)]||_0x25e8b1!==this[_0x31819f(0x441)]||!this['desiredKeys']['has'](_0x5b9ce9[_0x31819f(0x23b)]))&&(this[_0x31819f(0x442)]['add'](_0x5b9ce9[_0x31819f(0x23b)]),this[_0x31819f(0x3bb)]());})[_0x5ead50(0x256)](_0x24c8f2=>{const _0x458bb7=_0x5ead50;_0x24c8f2 instanceof DOMException&&_0x24c8f2[_0x458bb7(0x356)]===_0x458bb7(0x1bb)||console[_0x458bb7(0x3ee)](_0x24c8f2);})[_0x5ead50(0x2d6)](()=>{const _0x312b9f=_0x5ead50;this[_0x312b9f(0x340)][_0x312b9f(0x23d)](_0x1560c0),this[_0x312b9f(0x347)]['get'](_0x5b9ce9[_0x312b9f(0x23b)])===_0x4d20a8&&this['pendingKeys'][_0x312b9f(0x23d)](_0x5b9ce9[_0x312b9f(0x23b)]),_0x4d20a8===this['sourceGeneration']&&this[_0x312b9f(0x206)]();});}[_0x59dd37(0x27e)](){const _0x521a33=_0x59dd37;this['renderDirty']&&this[_0x521a33(0x3bb)]();}[_0x59dd37(0x3bb)](){const _0x2a01c2=_0x59dd37;this[_0x2a01c2(0x146)]||(this[_0x2a01c2(0x241)]=!0x0,!(this[_0x2a01c2(0x375)]!==_0x2a01c2(0x3bd)||this['frameRequest']!==0x0)&&(this[_0x2a01c2(0x19b)]=requestAnimationFrame(()=>{const _0x369524=_0x2a01c2;this[_0x369524(0x19b)]=0x0,!(this[_0x369524(0x146)]||!this['renderDirty'])&&this[_0x369524(0x2e4)]();})));}};let _0x52fa45=_0xdbfd43=>_0x3203d9[_0x59dd37(0x360)](_0xdbfd43),_0x370bc7=(_0x2d0809,_0x13d2bb,_0x2db9ca,_0x2ef821)=>{const _0x24c8f7=_0x59dd37;if(!Number['isInteger'](_0x2d0809)||!Number[_0x24c8f7(0x333)](_0x13d2bb)||_0x2d0809<0x0||_0x13d2bb<=0x0||_0x2d0809+_0x13d2bb>_0x2db9ca)throw Error(_0x2ef821+_0x24c8f7(0x274)+_0x2d0809+_0x24c8f7(0x1e1)+_0x13d2bb+_0x24c8f7(0x3af)+_0x2db9ca+'.\x20'+_0x2ef821+_0x24c8f7(0x285));},_0x4f9221=(_0x3e64cc,_0x30786c)=>{const _0x25a388=_0x59dd37;_0x370bc7(_0x30786c[_0x25a388(0x2ae)],_0x30786c[_0x25a388(0x35b)],_0x3e64cc[_0x25a388(0x280)]['count'],'X'),_0x370bc7(_0x30786c[_0x25a388(0x1b4)],_0x30786c[_0x25a388(0x3c0)],_0x3e64cc[_0x25a388(0x295)][_0x25a388(0x399)],_0x25a388(0x422)),_0x370bc7(_0x30786c['sourceYStart'],_0x30786c['sourceYCount'],_0x3e64cc[_0x25a388(0x3ba)]['count'],_0x25a388(0x21a));},_0x318589=_0x588bac=>{const _0xb169f3=_0x59dd37;_0xa250c4(_0x588bac);let _0x123cf2=_0x588bac[_0xb169f3(0x280)][_0xb169f3(0x399)]*_0x588bac[_0xb169f3(0x295)][_0xb169f3(0x399)]*_0x588bac[_0xb169f3(0x3ba)][_0xb169f3(0x399)]*_0x588bac[_0xb169f3(0x1a2)];if(_0x588bac[_0xb169f3(0x2d2)][_0xb169f3(0x2ec)]!==_0x123cf2)throw Error(_0xb169f3(0x1cd)+_0x123cf2+_0xb169f3(0x260)+_0x588bac['values']['length']+_0xb169f3(0x2af));};_0x374797[_0x59dd37(0x2b1)]=_0x17b94f,_0x374797[_0x59dd37(0x219)]=_0x4aed0e,_0x374797[_0x59dd37(0x1cc)]=_0x5e60bf=>{_0x318589(_0x5e60bf);let {values:_0x40490b,..._0x32519d}=_0x5e60bf;return{'metadata':_0x32519d,'readChunk'(_0x3b9eeb,_0x52c6d5,_0x5573bc){const _0x3a7041=_0x44e0;if(_0x5573bc?.[_0x3a7041(0x268)])throw new DOMException(_0x3a7041(0x412),'AbortError');if(!Number[_0x3a7041(0x333)](_0x3b9eeb)||_0x3b9eeb<0x0||_0x3b9eeb>=_0x5e60bf[_0x3a7041(0x1a2)])throw Error(_0x3a7041(0x3fe)+_0x3b9eeb+_0x3a7041(0x12d));_0x4f9221(_0x5e60bf,_0x52c6d5);let _0x2eae30=new Float32Array(_0x52c6d5[_0x3a7041(0x35b)]*_0x52c6d5[_0x3a7041(0x3c0)]*_0x52c6d5['sourceYCount']),_0x2c8c06=_0x5e60bf[_0x3a7041(0x280)][_0x3a7041(0x399)],_0x2394bb=_0x5e60bf[_0x3a7041(0x295)]['count'],_0x4e6a35=_0x5e60bf['zAxis'][_0x3a7041(0x399)],_0x5ea239=_0x3b9eeb*_0x2c8c06*_0x2394bb*_0x4e6a35;for(let _0x37535a=0x0;_0x37535a<_0x52c6d5[_0x3a7041(0x2cc)];_0x37535a+=0x1)for(let _0x491671=0x0;_0x491671<_0x52c6d5[_0x3a7041(0x3c0)];_0x491671+=0x1){let _0x196100=_0x5ea239+(((_0x52c6d5[_0x3a7041(0x1a1)]+_0x37535a)*_0x2394bb+_0x52c6d5['levelStart']+_0x491671)*_0x2c8c06+_0x52c6d5[_0x3a7041(0x2ae)]),_0x52926e=(_0x37535a*_0x52c6d5[_0x3a7041(0x3c0)]+_0x491671)*_0x52c6d5[_0x3a7041(0x35b)];_0x2eae30[_0x3a7041(0x1ca)](_0x40490b[_0x3a7041(0x211)](_0x196100,_0x196100+_0x52c6d5[_0x3a7041(0x35b)]),_0x52926e);}return{'timeIndex':_0x3b9eeb,'range':{..._0x52c6d5},'width':_0x52c6d5[_0x3a7041(0x35b)],'height':_0x52c6d5[_0x3a7041(0x3c0)],'depth':_0x52c6d5[_0x3a7041(0x2cc)],'values':_0x2eae30};}};},_0x374797[_0x59dd37(0x3db)]=_0x52fa45,_0x374797[_0x59dd37(0x2d4)]=_0x50b2fb,_0x374797['normalizedToVolumeAxisValue']=_0x112067,_0x374797[_0x59dd37(0x2bc)]=_0x38cff1;}));
|